输入10个数,用“起泡法”对10个数排序(由小到大)
高级语句程序设计(C)经典试题及答案讲解
高级语句程序设计(C++)经典试题一、单项选择题1、在一个C++程序中,main函数的位置()。
①必须在程序的开头②必须在程序的后面③可以在程序的任何地方④必须在其它函数中间2、一个C++程序的执行是从()。
A、本程序的main函数开始,到main函数结束B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C、本程序的main函数开始,到本程序文件的最后一个函数结束D、本程序文件的第一个函数开始,到本程序main函数结束3、在计算机语言中,以下描述正确的是:A、高级语言较低级语言更远离对硬件的直接操作。
B、高级语言较低级语言更接近对硬件的直接操作。
C、C++是世界上第一种计算机高级语言。
D、C语言是由美国的微软公司研制成功的。
4、C++源程序的实现一般要经过三个步骤,其中不包括:A、编辑B、维护C、编译D、运行5、设i=1,j=2,则表达式i++ +j的值为()。
① 1 ② 2 ③ 3 ④6、设i=1,j=2,则表达式++i+j的值为()。
① 1 ② 2 ③ 3 ④7、执行下列语句后,x的值是()。
int x,y;x=y=1; ++x||++y;①不确定② 0 ③ 1 ④ 28、已知x=5,则执行语句x+=x-=x×x; 后,x的值为()。
① 25 ② 40 ③ -40 ④ 209、常量是在程序中:A、经常被使用的量。
B、最高级的量。
C、按固定周期使用的量。
D、按固定值使用的量。
10、有如下程序段:int a=14,b=15,x;char c=’A’;x=(a&&b)&&(c<’B’);执行该程序段后,x的值为()。
① ture ② false ③ 0 ④ 111、下面程序的输出结果是()。
#include <iostream>using namespace std;int main( ){ int a=6,b=6;if(a>5)a-=1;b+=1;elsea+=1;b-=1;cout<<”a=”<<a<<endl;cout<<”b”<<b<<endl;return 0; }① 5 7 ② a=5 b=7 ③ a=5 b=6 ④编译时出错12、下面程序的输出结果是()#include <iostream>using namespace std;int main( ){ int a=6,b=6;if(a>5){a-=1;b+=1;}else{a+=1;b-=1;}cout<<”a=”<<a<<endl;cout<<”b=”<<b<<endl;return 0; }① 5 7 ② a=5 b=7 ③ a=5 b=6 ④ a=6 b=513、下面程序的输出结果是()#include <iostream>using namespace std;int main( ){ int x=6,y=8;if(x++<6)cout<<++y<<endl;if(x>6)cout<< --y<<endl;elsecout<<y++<<endl;return 0;}① 8 ② 7 ③ 9 ④编译时出错14、下面程序的输出结果是()#include <iostream>using namespace std;int main( ){ int x=6,y=8;if(++x<6)cout<<++y<<endl;elsecout<<y++<<endl;if(x>6)cout<< --y<<endl;return 0; }① 8 8 ② 9 7 ③ 7 8 ④编译时出错15、下面程序的输出结果是()#include <iostream>using namespace std;f(int a){ int b=0;static int c=3;b++;c++;return (a+b+c);}int main( ){ int a=2,i;for(i=0;i<3;i++)cout<<f(a)<<endl;return 0;}① 7 8 9 ② 7 7 7 ③ 7 10 13 ④ 7 9 1116、下面程序的输出结果是()#include <iostream>using namespace std;void fun(int x,int y,int z){ z=x×x+y×y; }int main( ){ int z=68;fun(5,2,z);cout<<z;return 0; }① 0 ② 29 ③ 68 ④无定值17、下面程序的输出结果是()#include <iostream>using namespace std;int fun(int a,int b){ return (++a×b++); }int main( ){ int x=3,y=4,z=5,r;r=fun(fun(x,y),z);cout<<r<<x<<y<<endl;}① 85 3 4 ② 60 3 4 ③ 126 4 5 ④ 85 4 518、下面的程序中,当输入4、2时,其输出结果是()#include <iostream>using namespace std;long fib(int n){ if(n>2) return (fib(n-1)+fib(n-2));else return (n); }int main( ){ int i;cout<<”请输入一个整数:”;cin>>i; cout<<endl;cout<<fib(i)<<endl;return 0; }① 5 1 ② 4 2 ③ 5 2 ④ 6 219、下面程序的输出结果为()#include <iostream>using namespace std;unsigned func(unsigned num){ unsigned d=1,k;do {k=num%10;num/=10;}while(num);return (k); }int main( ){ unsigned n=26;cout<<func (n);return 0; }① 2 ② 4 ③ 6 ④ 520、下面程序的输出结果为()#include <iostream>using namespace std;func (int a,int b){ int c;c=a×b;return (c );}int main( ){int x=6,y=7,z=8,r;r=func((x--,y,x×y),z--);cout<<r;return 0; }① 294 ② 245 ③ 280 ④ 41621、执行语句int i=10,*p=&i;后,下面描述错误的是()。
C++上机复习题及答案
1有3个整数a,b,c,由键盘输入,输出其中最大的数.#include<stdio.h>void main(){int a,b,c;printf("输入三个数:");scanf("%d%d%d",&a,&b,&c);if(a>b&&a>c)printf("最大值为:%d",a);else if(b>a&&b>c)printf("最大值为:%d",b);elseprintf("最大值为:%d",c);}2给出一百分制成绩,要求输出成绩等级‘A’、‘B’,‘C’,‘D’,‘E’。
90分以上为‘A’,80~89为‘B’,70~79为‘C’,60~69为‘D’,60分以下为‘E’。
#include<stdio.h>void main(){float grade;scanf("%f",&grade);if (grade>=90&&<=100)printf("A");else if(grade>=80&&<90)printf("B");else if("grade>=70&&grade<80)printf("C");else if(grade>=60&&<70)printf("D");elseprintf(("E");}3. 输入两个正整数m和n,求其最大公约数和最小公倍数。
(辗转相除法)#include <stdio.h>main(){int a,b,m,n,temp;printf("请输入两个整数:\n");scanf("%d%d",&m,&n);if(m<n){temp=m;m=n;n=temp;}a=m;b=n;while(b!=0){temp=a%b;a=b;b=temp;}printf("最大公约数是:%d\n",a);printf("最小公倍数是:%d\n",n*m/a);}4、计算100至999之间有多少个数,其各位数字之和是5。
c题库题目
程序填空1.从键盘上输入两个复数的实部与虚部,求出并输出它们的和、积、商。
2.以下程序的功能如(图1)。
|x+1| x<0f= 2x+1 0≤x≤5sinx+5 x>53.输入三个整数x,y,z,请把这三个数由小到大输出。
4.统计读入的整数数据中大于零的整数个数和小于零的整数个数。
用输入零来结束输入,程序中用变量i统计大于零的整数个数,用变量j统计小于零的整数个数。
5.以每行5个数输出500以内能被7或17整除的偶数,并求出其和。
6.以下程序不借助任何中间变量把a、b的值进行交换。
7.输出斐波那契(Fibonacci)数列(1,1,2,3,5,8,13……)的前20项。
8.求 1-3+5-7+……-99+101 的值。
9.输出如下形式的乘法表。
1*1=12*1=2 2*2=43*1=3 3*2=6 3*3=9……9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=8110.实现求解下面的式子的结果,请填空将程序补充完整。
s=1*2+2*3+3*4+…+20*21。
11.以下程序的功能是分别求出一批非零整数中的偶数、奇数的平均值,用零作为终止标记。
12.求任一整数x的各位数字之和。
13.以下程序的功能是求两个非负整数的最大公约数和最小公倍数。
14.以下程序的功能如(图1)。
15.算式:?2*7?=3848中缺少一个十位数和一个个位数。
编程求出使该算式成立时的这两个数,并输出正确的算式。
16.输出100到1000之间的各位数字之和能被15整除的所有数,输出时每10个一行。
17.下面的程序是求1!+3!+5!+……+n!的和.18.请编程序打印如下图形。
$$$$$$$$$$$$$$$19.打印出如下图案(菱形)*************************20.从键盘上输入20个元素的值存入一维数组m中,然后将下标为(0. 2. 4. 6. 8. 10……18)的元素值赋值给数组n,最后输出数组n的内容。
c语言综合练习题及答案
c语⾔综合练习题及答案模拟试题⼀⼀、选择题(本⼤题30分,每⼩题2分)1.下列说法正确的是。
A)main函数必须放在C程序的开头B)main函数必须放在C程序的最后C)main函数可以放在C程序的中间部分,但在执⾏C程序时是从程序开头执⾏的D)main函数可以放在C程序的中间部分,但在执⾏C程序时是从main函数开始的2.在下⾯⼏组数据类型中, 全为最常⽤的基本数据类型的是哪⼀组:。
A)整型实型字符型B)整型数组指针C)数组结构体共⽤体D)指针逻辑型空类型3.若有说明语句:char c= …\64? ; 则变量C包含:。
A)1个字符B)2个字符C)3个字符D)说明不合法,C值不确定4.设有如下定义和执⾏语句,其输出结果为:。
int a=3,b=3;a = --b + 1; printf(“%d%d”,a,b);A)3 2 B)4 2 C)2 2 D)2 35.C语⾔中,运算对象必须是整型数的运算符是。
A)% B)\ C)% 和\ D)**6.能正确表⽰x的取值范围在[0,100]和[-10,-5]内的表达式是。
A)(x<=-10)||(x>=-5)&&(x<=0)||(x>=100)B)(x>=-10)&&(x<=-5)||(x>=0)&&(x<=100)C)(x>=-10)&&(x<=-5)&&(x>=0)&&(x<=100)D)(x<=-10)||(x>=-5)&&(x<=0)||(x>=100)7.程序段如下int k=0;while(k++<=2); printf("last=%d\n",k);则执⾏结果是last= 。
A)2 B)3 C)4 D)⽆结果8.下⾯有关for循环的正确描述是。
谭浩强教材习题选
1)要将“China”译成密码,密码规律是:用原来的字母后面第4个字母替原来的字母。
例如,字母“A”后面第4个字母是“E”,用“E”代替“A”。
因此,“China”应译为“Glmre”。
请编一程序,用赋初值的方法使c1、c2、c3、c4、c5五个变量的值分别为‘C’,‘h’、‘i’、‘n’、‘a’,经过运算,使分别变为‘G’,‘l’,‘m’,‘r’、‘e’,并输出。
2)给出一百分制成绩,要求输出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’,90分以上为‘A’,80—89分为‘B’,70—79分为‘B’,60—69分为‘B’,60分以下为‘E’3)给出一个不多于5位的正整数,要求:1、求出它是几位数;2、分别打印出每一位数字;3、按逆序打印出个位数字,例如原数是321,应输出123。
4)输入4个整数,要求按由小到大的顺序输出。
5)企业发放的奖金根据利润提成。
数组6)用筛选法求100之内的素数7)用选择法对10个整数排序8)求一个3*3的整型矩形对角线元素之和9)已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中10)将一个数组中的值按逆序重新存放。
11)打印魔方阵。
行,列,对角线和相等12)找出一个二维数组的鞍点,该行最大,该列最小,也可能没有。
13)有15个数按由大到小存放,用折半法找出该数是数组中第几个元素的值。
14)电文加密15)字符串连接16)字符串比较17)字符串拷贝函数18)写两个函数,分别求两个整数的最大公约数和最小公倍数19)写一个判素数的函数20)写一个函数,使一个给定的二维数组行列互换21)写一个函数,使字符串反序存放,在主函数中输入输出22)写一函数,将一个字符串中元音字母复制到另一字符串23)写一函数,输入一个4位数字,要求输出4个数字字符,但要求数字间空一个空格24)编写一个函数,统计参数字符串中字母、数字、空格和其他字符的个数25)写一个函数,输入一行字符,将此字符串最长的单词输出26)写一函数,用起泡法对10个字符排序27)输入10个学生5门课的成绩,分别用函数求:每个学生的平均分,每门课的平均分,找出最高分数对应的学生和课程,28)写几个函数,输入10个职工的姓名和职工号,按职工号从大到小的顺序排序,姓名顺序也随着调整;用折半法查找输入的一个职工号,输出该职工姓名。
用“起泡法”对输入的10个数字按由小到大顺序排列
8.11写一函数,用起泡法对输入的10个字符按由小到大顺序排列2008-01-0816:45/*运行结果为:请输入1个字符串:chins ungle排序后字符串为:c eghil nnsu.*/#inclu de <s tdio.h>#i nclud e <st ring.h>#d efine N 10void sort(char str[]){int i,j,t;for(i=1;i<N;i++)//总共进行N-1次冒泡运算for(j=0;j<N-i;j++)//第一次N-1个回合,第二次N-2个回合,最后一次即第N-1次一个回合if(str[j]>str[j+1]){t=str[j];s tr[j]=str[j+1];str[j+1]=t;}}ma in(){cha r str[100];do{pri ntf("请输入1个字符串:\n");scanf("%s",str);}w hile(strle n(str)!=10);so rt(st r);p rintf("排序后字符串为:%s.\n",str);}#i nclud e <st dio.h>voi d mai n(){int a[10];i nt i,j,tem p;p rintf("请输入10个数:");for(i=0;i<10;i++) scan f("%d",&a[i]);for(i=0;i<10;i++) for(j=i+1;j<10;j++) if(a[i]>a[j]) {t emp=a[i];a[i]=a[j];a[j]=t emp; }for(i=0;i<10;i++) prin tf("%d\t",a[i]);} #i nclud e <st dio.h>vo id ma in(){in t i,j, te mp;int e lemen t[10];in t *st art,*end;print f("\n请输入10个数:\n ");for(i = 0;i <10;i++){ scan f("%d", &e lemen t[i]);}s tart= ele ment; /* s tart指针指向数组的第一个元素 */end = el ement + 10; /*end 指针指向数组的最后一个元素 */ pri ntf("\n原始数组:\n");/* 输出原始数组*/f or(;s tart< end;star t++){ prin tf("%d ", *sta rt);}print f("\n\n排序后的数组:\n");/*输出排序后的数组*/s tart=eleme nt;for(i = 10;i >0;i--){for(j =10 -i;j > 0;j--){if(*(start + j-1) >*(sta rt+j)){ temp = *(start + j-1); *(start + j-1) =*(sta rt+j); *(st art+j) = t emp;}}}for(s tart= ele ment;start < en d;sta rt++) { prin tf("%d ", *sta rt);}p rintf("\n");}。
C语言大题有答案
C语言大题有答案复习题一.选择题1.以下选项中正确的常量是( A )(A)12 (B)0.329*10^2 (C)1,000 (D) 4 5 62.以下选项中不合法的用户标识符是( C )(A)title (B)A7s (C)7ab (D) PRINTF3.下列选项中,不合法的标识符是( D)(A) _1234_ (B) _1_2 (C) int_2_ (D) 2_int_4.以下符合C语言语法的实型常量是( C )(A) 1.2E0.5 (B) 3.14.159E (C) .5E-3 (D) E155.下列字符中,ASCII码值最大的是( D )(A)A (B)a (C)X (D)x6.C语言提供的合法的关键字是( D )(A)swicth (B)Char (C)Case (D)short7.在C语言中,合法的字符常量是( A )(A)'\030' (B)'\o89' (C)'ab' (D)"\0"*8.若已定义x和y为double类型,则表达式:x=1,y=x十3/2的值是(C )(A)1.0 (B)2 (C)2.0 (D)2.59. 当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是(C)(A) c=b=a;(B) (a=c)||(b=c) ;(C) (a=c) &&(b=c);(D) a=c=b;10. C语言中,int类型数据占2个字节,则long类型数据占字节数( C)(A) 1 (B) 2 (C) 4 (D) 811.在以下一组运算符中,优先级最高的运算符是( C )(A)<= (B)= (C)% (D)&&12. 以下所列的C语言常量中,错误的是( B )(A) 0xFF (B) 1.2e0.5 (C) 2L (D) '\72'13. 下列选项中,合法的C语言关键字是( D )(A) VAR (B) cher (C) integer (D) default14.若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是( C)(A) -3 (B) 9 (C) -12 (D) 615. 设x、y、t均为int型变量,则执行语句:x=y=3;t=++x||++y;后,y的值为( C )(A) 不定值(B) 4 (C) 3 (D) 116.有以下程序段:【int k=0;while(k==1)k++;】while 循环执行的次数是( C)(A) 无限次(B) 有语法错,不能执行(C) 一次也不执行(D) 执行1次17.有以下程序段:【int x=3;do{ printf("%d",x-=2); }while (!(--x)); 】,其输出结果是( C )(A) 1 (B) 30 (C) 1-2 (D) 死循环18.合法的数组定义是( D )(A)int a[]="abcdef"; (B)int a[3]={0,1,2,3};(C)char a ="abcdef"; (D)char a[]={0,1,2,3};*19.设a为整型变量,不能正确表达数学关系:5<a<="" p="" 的c语言表达式是(="">(A)5<a5&&a<10 (D)!(a<=5)&&!(a>=10)</a*20.若t为double类型,表达式t=2,t+5,t++的值是( D )(A)2 (B)7.0 (C)3.0 (D)2.021.语言中运算对象必需是整型的运算符是( C )(A)+ (B)/ (C)% (D)**22.以下是C语言语句的是( A )(A) a++;(B)a=a+7 (C) int b (D)printf(“ABCD”)23. C语言中double 类型变量所占字节数是( D )(A)16 (B)2 (C)4 (D)824.若a、b、c、d都是int 类型变量且初值为0,以下选项中不正确的赋值语句是( C)(A)a=c+d;(B)d--;(C)a=b+c=c+d;(D)a=(c=22)-(b++);25.为表示关系 x>y>z,应使用的C语言表达式是( D )(A)(x>y)&(y>z)(B)(x>y)AND(y>z) (C)(x>=y>=z) (D)(x>y)&&(y>z)26.C语言中,字符(char)型数据在微机内存中的存储形式是( B )(A)反码(B)ASCII码(C)EBCDIC码(D)、原码27.语言中的基本数据类型有(D )(A)整型、实型、逻辑型、字符型(B)整型、实型、逻辑型(C)整型、字符型、逻辑型(D)整型、实型、字符型28.以下函数调用语句func(exp3, (exp4,exp5));中,含有的实参个数是( B )(A)1 (B)2 (C)3 (D)529.若有定义: int x, *pb; 则以下正确的赋值表达是(A)(A)pb=&x (B)pb=x (C)*pb=&x (D)*pb=*x*30.若有定义 int *p, a[5];且p已指向a[0],则执行完p++后 ,p指向下列哪一数组元素( B )(A)a[0] (B)a[1] (C)a[2] (D)a[3]31、若int w=4,x=3,y=2,z=1;则表达式w<x?w:z(A)1 (B)2 (C)3 (D)432. 当调用函数时,实参是一个数组名,则向函数传送的是(B )(A) 数组的长度 (B) 数组的首地址(C) 数组每一个元素的地址(D) 数组每个元素中的值33.以下能正确定义二维数组的是( C )(A) int a[][3]; (B) int a[][3]=2{2*3};(C) int a[][3]={{1},{3,4}};(D) int a[2][3]={{1},{2},{3,4}};34. 若有定义:int aa[ 8];则以下表达式中不能代表数组元aa[1]的地址的是( C )(A) &aa[0]+1 (B) &aa[1] (C) &aa[0]++ (D) aa+135.若有以下定义:char str[20]="programming",* p=str;则不能代表字符g的表达式是( A) (A)p+3 (B)str[3] (C)p[3] (D)p+=3,* p36.若有以下定义和语句:int a[10]={1,2,3,4,5,6,7,8,9,10},* p=a;则不能表示a数组元素的表达式是( B )(A)* p (B)a[10] (C)* a (D)a[p-a]37.若有以下的定义:int s[]={3,4,5,6,7,8,9,10,11,12},* p=s;则值为8的表达式是( A ) (A)p+=5,*(p++)(B)p+=5,*++p (C)p+= 6,* p++ (D)p+=5,++ * p38.若有定义和语句: int a[5][10],(* p)[10];p=a,则对a数组第一元素的正确引用是(C )(A)*(a[0]+2)(B)*(p+1)(C)p[0][0] (D)*(p[1]+2)39.函数调用:strcat(strcpy(str1,str2),str3)的功能是( C )(A)将串str1复制到串str2中后,再连接到串str3之后(B)将串str1连接到串str2之后,再复制到串str3之后(C)将串str2复制到串str1中后,再将串str3连接到串str1之后(D)将串str2连接到串str1之后,再将串str1复制到串str3中*40.以下对C语言函数的有关描述中,正确的是( A )(A)在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参(B)C函数既可以嵌套定义又可以递归调用(C)函数必须有返回值,否则不能使用函数(D)C程序中有关调用关系的所有函数必须放在同一个源程序文件中41.在下列给数组赋初值语句中,( C )是错误的。
c语言程序改错题
程序改错-------------------------------------1题目:在一个一维整型数组中找出其中最大的数及其下标。
程序中共有4条错误语句,请改正错误。
-----------------*/#define N 10/**********FOUND**********/float fun(int *a,int *b,int n){int *c,max=*a;for(c=a+1;c<a+n;c++)if(*c>max){max=*c;/**********FOUND**********/b=c-a;}return max;}main(){int a[N],i,max,p=0;printf("please enter 10 integers:\n");for(i=0;i<N;i++)/**********FOUND**********/scanf("%d",a[i]);/**********FOUND**********/m=fun(a,p,N);printf("max=%d,position=%d",max,p);}-------------------------------------『错误答案』:1 int fun(int *a,int *b,int n)2 *b=c-a;}3 scanf("%d",&a[i]);4 max=fun(a,&p,N);/*-----------------------------------2题目:用起泡法对10个整数从小到大排序。
程序中共有4条错误语句,请改正错误。
-------------------------------------/**********FOUND**********/void sort(int x,int n){int i,j,k,t; for(i=0;i<n-1;i++)/**********FOUND**********/for(j=0;j<n-i;j++)/**********FOUND**********/if(x[i]>x[i+1]){ t=x[j];x[j]=x[j+1];x[j+1]=t;}}main(){int i,n,a[100];printf("please input the length of the array:\n");scanf("%d",&n);for(i=0;i<n;i++)scanf("%d",&a[i]);sort(a,n);printf("output the sorted array:\n");for(i=0;i<=n-1;i++)printf("%5d",a[i]);printf("\n");}-------------------------------------『错误答案』:1 void sort(int x[],int n)2 for(j=0;j<n-1-i;j++) 或for(j=0;n-1-i>j;j++) 或for(j=0;j<n-(1+i);j++) 或for(j=0;n-(1+i)>j;j++)3 if(x[j]>x[j+1]) 或if(x[j+1]<x[j])-------------------------------------3题目:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。
题44:编程输入10个正整数,然后自动按从大到小的顺序输出
题44:编程输入10个正整数,然后自动按从大到小的顺序输出。
题44:编程输入10个正整数,然后自动按从大到小的顺序输出。
Input输入只有一行,包括10整数.Output输出只有一行,包括10个整数。
Sample Input1 2 3 4 5 7 6 8 9 10Sample Output10 9 8 7 6 5 4 3 2 1提示:数组与排序,注意输出最后一个空格要考虑。
处理方法最后一个单独输出。
program ex_44;var a:array[1..10] of integer;i,j,t:integer;beginfor i:=1 to 10 do read(a[i]);for i:=1 to 9 dofor j:=i+1 to 10 doif a[i]<a[j] then begin t:=a[i];a[i]:=a[j];a[j]:=t; end;for i:=1 to 9 do write(a[i],' ');write(a[10]);end.题46:统计字母出现次数输入一串小写字母(以"."为结束标志),统计出每个字母在该字符串中出现的次数(若某字母不出现,则不要输出)。
Input输入只有一行,包括若干个字符。
Output输出只有两行,第一行为出现的小写字母,第二行为字母的出现次数。
Sample Inputabdceeef.Sample Outputabcdef111131提示:注意利用字符做下标,可以让程序简单。
program ex_45;var a:array['a'..'z'] of integer;i,ch:char;beginread(ch);for i:='a' to 'z' do a[i]:=0;while ch<>'.' dobegina[ch]:=a[ch]+1;read(ch);end;for i:='a' to 'z' doif a[i]<>0 then write(i);writeln;for i:='a' to 'z' doif a[i]<>0 then write(a[i]);end.题48:求序列中所有递增或递减子序列的个数并输出子序列题48:求序列中所有递增或递减子序列的个数并输出子序列。
C语言冒泡排序比较大小
C语⾔冒泡排序⽐较⼤⼩例23:C语⾔实现从⼩到⼤对10个数进⾏排序,要求使⽤冒泡排序实现。
解题思路:排序的规律有两种:⼀种是“升序”,从⼩到⼤;另⼀种是“降序”,从⼤到⼩。
源代码演⽰:#include<stdio.h>//头⽂件int main()//主函数{int i,j,t;//定义整型变量int array[10];//定义数组⼤⼩printf("请输⼊⼗个数:");//提⽰语句for(i=0;i<10;i++)//⼿动往数组⾥输⼊10个数{scanf("%d,",&array[i]);//注意&符号}for(j=0;j<9;j++)//外层循环限制{for(i=0;i<9-j;i++)//内存循环if(array[i]>array[i+1])//如果前⼀个数⽐后⼀个数⼤{t=array[i]; //把⼩的数赋值给前⾯,⼤的数赋值给后⾯array[i]=array[i+1];array[i+1]=t;}}printf("按照从⼩到⼤的顺序排序:");//提⽰语句for(i=0;i<10;i++)//循环输出10个数{printf("%d ",array[i]);}printf("\n");//换⾏return0;//函数返回值为0}编译运⾏结果如下:请输⼊⼗个数:98416274109按照从⼩到⼤的顺序排序:12446789910--------------------------------Process exited after 20.46 seconds with return value 0请按任意键继续. . .以上就是很著名的“冒泡排序”,也称为“起泡排序”,读者通过此例对以后学习快速排序、堆排序等会有所启⽰。
留个问题,读者请思考从到⼩该如何排序呢?。
数学实验课程全部实验答案
主要涉及的内容有:最基本的矩阵运算(填空),线性方程组(左乘右乘问题)、积分函数、符号变量定义及结果输出形式、多项式回归函数输出结果分析、线性回归函数输出结果分析、多项式的线性运算等相关内容。
实验一:(1)用起泡法对10个数由小到大排序. 即将相邻两个数比较,将小的调到前头. function bubble_sortA=[10 5 64 8 464 35 14 666 57 784]; l=length(A); for i=1:l-1 for j=i+1:l if A(i)>A(j) t=A(i); A(i)=A(j); A(j)=t; end end end B=A实验结果: >> bubble_sort B =5 8 10 14 35 57 64 464 666 784 (2)有一个4*5矩阵,编程求出其最大值及其所处的位置. function findmax(A) a=max(max(A)) [x,y]=find(A==a) 实验结果:>> findmax([54 8 64 999;5496 88 97 6;554 686 5666 655;878 5 87 5454;588 544 5466 3364]) a =5666 x = 3 y = 3 (3)编程求∑=201!n nfunction f=fun3(n) s=1;while n<=20 s=s*n n=n+1; end>> f=fun3(1) f =2.4329e+018(4)有一函数y xy x y x f 2sin ),(2++=,写一程序,输入自变量的值,输出函数值. function f=fun4(x,y) f=x^2+sin(x*y)+2*y end 实验结果: >> f=fun4(2,3) f = 9.7206 f = 9.7206 实验二:1. 绘制如下几种数学曲线(并调制a,b,c,观察图形的变化)(1) 笛卡尔曲线213t atx +=,2213t at y +=(axy y x 333=+) >> syms x y>> a=[1 2 3 4];>> f1=x^3+y^3-3*a(1)*x*y; >> f2=x^3+y^3-3*a(2)*x*y; >> f3=x^3+y^3-3*a(3)*x*y; >> f4=x^3+y^3-3*a(4)*x*y;>> subplot(2,2,1); ezplot(f1) >> subplot(2,2,2);ezplot(f2) >> subplot(2,2,3);ezplot(f3) >> subplot(2,2,4);ezplot(f4)(2) 蔓叶线221t at x +=,231t at y +=(x a x y -=32)>> a=[1 2 3 4];>> f1=y^2-(x^3)/(a(1)-x); >> f2=y^2-(x^3)/(a(2)-x); >> f3=y^2-(x^3)/(a(3)-x); >> f4=y^2-(x^3)/(a(4)-x);>> subplot(2,2,1); ezplot(f1) >> subplot(2,2,2); ezplot(f2) >> subplot(2,2,3);ezplot(f3) >> subplot(2,2,4);ezplot(f4)(3) 星形线t a x 3cos =,t a y 3sin =(323232a y x =+) >> t=0:0.1:2*pi; >> a=[1 2 3 4];>> x1=a(1)*(cos(t).^3); >> y1=a(1)*(sin(t).^3); >> subplot(2,2,1); >> plot(x1,y1)>> x2=a(2)*(cos(t).^3); >> y2=a(2)*(sin(t).^3);>> subplot(2,2,2);plot(x2,y2) >> x3=a(3)*(cos(t).^3); >> y3=a(3)*(sin(t).^3);>> subplot(2,2,3);plot(x3,y3) >> x4=a(4)*(cos(t).^3); >> y4=a(4)*(sin(t).^3);>> subplot(2,2,4);plot(x4,y4)(4) 心形线)cos 1(θ+=a r >> a=[1 2 3 4];>> theta=0:0.1:2*pi;>> r1=a(1)*(1+cos(theta)); >> r2=a(2)*(1+cos(theta));>> r3=a(3)*(1+cos(theta)); >> r4=a(4)*(1+cos(theta));>> subplot(2,2,1);polar(r1,theta) >> subplot(2,2,2);polar(r2,theta) >> subplot(2,2,3);polar(r3,theta) >> subplot(2,2,4);polar(r4,theta)(5) 圆的渐开线)cos (sin ),sin (cos t t t a y t t t a x -=-= >> syms x y >> a=[1 2 3 4];>> x1=a(1).*(cos(t)-t.*sin(t)); >> x2=a(2).*(cos(t)-t.*sin(t)); >> x3=a(3).*(cos(t)-t.*sin(t)); >> x4=a(4).*(cos(t)-t.*sin(t)); >> y1=a(1).*(sin(t)-t.*cos(t)); >> y2=a(2).*(sin(t)-t.*cos(t)); >> y3=a(3).*(sin(t)-t.*cos(t)); >> y4=a(4).*(sin(t)-t.*cos(t)); >> subplot(2,2,1);plot(x1,y1) >> subplot(2,2,2);plot(x2,y2) >> subplot(2,2,3);plot(x3,y3) >> subplot(2,2,4);plot(x4,y4)2.(2)绘制球面4222=++z y x 与柱面1,1,1222222=+=+=+z y z x y x 的图像。
C语言上机题
1用起泡法对N=10个整数由大到小排序。
10个整数由键盘输入,排序后从屏幕输出结果2编写一函数,从实参传来一个字符串,分别统计其中数字、大写字母、小写字母和其它字符的个数,输入输出在main函数中完成3用一函数inv将一个字符串的字符逆序排列。
输入输出在main函数中完成。
要求在inv中用指针处理。
4求200之内的素数的和。
从屏幕输出结果5从屏幕输入一行字符,将所有的大写字母转换为小写字母,所有的小写字母转换为大写字母,其它字符不变,从屏幕输出结果6一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。
求它在第10次落地时,共经过多少米?第10次落地后又反弹多高?7对N=20个字符由大到小排序。
20个字符由键盘输入,排序后从屏幕输出结果8有一字符串,把其中的字母a和A去掉,成为一个新字符串。
原字符串从键盘输入。
从屏幕输出结果9求Fibonacci数列的前30项的和。
从屏幕输出结果。
Fibonacci数列为:F(1)=1,(n=1)F(2)=1,(n=2)F(n)=F(n-2)+F(n-1),(n>=3)10写一函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串11从键盘输入一个大于2的整数,判断是否是素数。
从屏幕输出结果。
要求用函数处理12从键盘输入月份,输出这个月有多少天。
要求用函数处理13求两个数的最大公约数。
要求用函数处理14求两个数的最小公倍数。
要求用函数处理15从屏幕输入3个整数,按从小到大顺序输出,要求用指针进行处理16自己编写一个函数,将两个字符串连接起来,要求在main函数中输入输出17打印水仙花数(课本习题)打印杨辉三角形的前10行19从一个5*5的二维数组中找最大值并输出20从一个5*5的二维数组中找最小值并输出21求10个整数的平均数。
10个整数从键盘输入22求100-200之间的素数的和23求100-200间合数(非素数)的和24求10个整数的最大值,用函数完成2510个字符排序,按从小到大的顺序,用函数完成26编写一个函数,求一个正整数各个位的数字的和。
实验报告 (1)c语言
main()
{
int a,b;
float x,y;
char c1,c2;
scanf(“a=%d,b=%d”,&a,&b);
scanf(“%f, %e”,&x,&y);
scanf(“%c %c”,&c1,&c2);
printf(“a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n”,a,b,x,y,c1,c2);
【作业】
1.参照例题,编写一个C程序,输出以下信息:
****************************
Hello,World!
***************************
2.编写一个C程序,输入a、b、c三个数,输出其中最大者。试想,如果求四个数中的最大者,则程序该如何编写。
(二)C语言的基础知识
scanf("%c",&c);//以字符的形式输入数字就是输入数字字符
a=c-'0';//将数字字符转换为数字或者a=c-48;
printf("a=%d",a);
}
数字和数字字符这是两个不同的概念,如:数字0和数字字符‘0’是不同的,因为他们的ASIIC码值不一样。
(三)一维数组
【目的与要求】
1.掌握一维数组的定义、赋值和输入输出的方法;
printf("Everyone has been waiting for.\n");
}
【例2】输入并运行程序,写出运行结果。
main()
{
int a,b,sum;
a=123;b=456;
冒泡排序算法
即A[1]和A[2]比较
比较完后A[2]再与A[3]比较
......最后是A[9]和A[10]比较
(2)在每次进行比较的过程中
如果前一个数比后一个数大
则对调两个数
也就是说把较大的数调到后面
较小的调到前面
比如在第一次的比较中
如果A[1]比A[2]大则A[1]和A[2]的值就互换
begin
writeln('INPUT 10 integer num:');
for I:=1 to n do
read(a[I]);
readln;
for j:=1 to n-1 do
N
A[I]>A[I+1]
A[I]与A[I+1]对调 Y
I:=I+1
通过上述算法可以写出插入排序算法的程序流程图
如图5所示:
开 始
读入一个数到X中;I:=1
A[I]>X
var
a:colarr;I,j,p,t:integer;
begin
writeln('input 10 integer num:');
for I:=1 to n do
read(a[I]);
for j:=1 to n-1 do
又名起泡排序
冒泡排序可用图3所示的流程图表示:
开 始
J:=1
I:=1
再把A[P]与A[3]对调......此过程重复N-1次后
就把A数组中N个数按从小到大的顺序排好了
这种排序的方法就是选择排序法
以上算法可以用图4表示:
程序改错题汇总
程序改错题汇总1、用"起泡法"对连续输入的十个字符排序后按从小到大的次序输出.2、分别统计字符串中大写字母和小写字母的个数。
3、求1到10的阶乘的和。
4、判断m是否为素数,若是返回1,否则返回0。
5、用选择法对数组中的n个元素按从小到大的顺序进行排序。
6、求一个3行4列矩阵的外框的元素值之和。
7、以下程序把两个数按由大到小的顺序输出来。
8、求1到20的阶乘的和。
9、判断字符ch是否与str所指串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后。
(指针)10、已知一个数列从第0项开始的前三项分别为0、0、1,以后的各项都是其相邻的前三项的和。
下列给定程序中,函数fun的功能是:计算并输出该数列的前n项的平方根之和sum,n的值通过形参传入。
11、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?12、编写函数fun计算下列分段函数的值:x*x+x x<0且x≠-3f(x)= x*x+5x 0≤x<10且x≠2及x≠3x*x+x-1 其它13、请编写函数fun,对长度为8个字符的字符串,将8个字符按降序排列。
14、实现交换两个整数的值。
15、读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行(这里的“单词”是指由空格隔开的字符串)。
16、先将在字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串的后面。
17、计算数组元素中值为正数的平均值(不包括0)。
18、将s所指字符串中出现的、t1所指子串全部替换成t2所指子字符串,所形成的新串放在w 所指的数组中。
在此处,要求t1和t2所指字符串的长度相同。
19、将s所指字符串中的字母转换为按字母序列的后续字母(但Z转换为A, z转换为a),其它字符不变。
20、在键盘上输入一个3行3列矩阵的各个元素的值(值为整数),后输出矩阵第一行与第三行元素之积,并在fun()函数中输出。
汇编语言输入10个数排序并输出的实现
汇编语⾔输⼊10个数排序并输出的实现⼀:题⽬描述在键盘输⼊任意10个数1. 按从⼩到⼤排序后,在计算机屏幕上先输出来。
要有结果提⽰(字符串显⽰)。
2. 将10个数做累加,结果在计算机屏幕显⽰累加和。
⼆:伪指令的定义1.数据段ATAS SEGMENTstring_1 DB 'Please input a numbers(0-65536):','$'string_2 DB 'ERROR: OVERFLOW! Please input again:','$'string_3 DB 'The array you have input is:',0ah,0dh,'$'string_4 DB 'After Sort the num is:',0ah,0dh,'$'string_5 DB ' ','$'DATA DW 10 DUP(?)massege DB 'The sum of the array is: ',0ah,0DH,'$'DATAS ENDS说明:string_1输⼊范围提⽰string_2输⼊错误提⽰string_3输出原数组提⽰string_4输出排序后数组提⽰string_5空格符DATA缓冲区数组2.堆栈段STACKS SEGMENTDW 256 dup(?)STACKS ENDS3.代码段CODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS三:模块分解与实现1. DOS输⼊10个数字输⼊10个⽆符号数存⼊缓冲区,并且保证 num<65536num < 65536num<65536为何输⼊范围是65536呢⼀个字的最⼤表⽰范围是 FFFFFFFFFFFF 其在⼗进制的表⽰下为 65535HEX FFFFDEC65535BIN1111 1111 1111 11111.1 输⼊函数⼦程序;---------输⼊函数(单数字输⼊)------------Input PROC Nearpush AXpush BXpush CXpush DX;---------输⼊提⽰--------------MOV BX, 0CLCMOV DX, 0;----------输⼊数字--------------Lp_0:MOV AH, 1INT 21HCMP AL, 20H ;回车JE L_CRLF;----- x belong to [0,9] ----------SUB AL, 30H ; ASCII -> intJL L_ERRORCMP AL, 9JG L_ERROR;------- string -> int -----------MOV AH, 0 ;将 AL扩展成 AXXCHG AX, BX ;保护 AX值MOV CX, 10MUL CX ; bx *= 10ADD AX , BXJC L_ERROR ; OVERFLOW处理XCHG AX, BXJMP Lp_0L_ERROR:MOV DX, 0MOV BX, 0CALL CRLF ; 换⾏CALL ERROR ; 输出错误提⽰JMP Lp_0L_CRLF: ; 以换⾏作为⼀个数的结束标志MOV DX, 0MOV DATA[SI], BX ;解析函数功能:本质类似于⾼精度计算,将读⼊的⼀个串转成数字存储在DATA数组中分成三⼤部分⼀:输⼊提⽰⼆:错误判断及提⽰三:转化为数字L_ERROR 错误处理L_CRLF 结束处理我们来举⼀个123412341234 的例⼦Register1234AX1234BX0112123CX10101010AX+(BX∗CX)AX + (BX * CX)AX+(BX∗CX)最后将结果存储在DATA数组⾥2.实现冒泡排序冒泡排序作为⼀个简单的排序算法,时间复杂度 O(n2)O(n^2)O(n2) 需要两层循环,为了提⾼代码的可读性,我们将内层的循环写成⼀个⼦程序每次调⽤内层循环很简单,每次从头⽐到尾,遇到⽐它⼩的交换就可以了。
用起泡法对10个数排序(由小到大)
⽤起泡法对10个数排序(由⼩到⼤)案例⼀:⽤起泡法对10个数排序(由⼩到⼤)。
案例⼀:1.程序分析:起泡法的思路是:将相邻两个数⽐较,将⼩的调到前头。
如下图所⽰。
9 8 8 8 8 88 9 5 5 5 55 5 9 4 4 44 4 4 9 2 22 2 2 2 9 00 0 0 0 0 9第1次第2次第3次第4次第5次结果若有6个数。
第⼀次将8和9对调,第⼆次将第2和第3个数(9和5)对调……如此共进⾏5次,得到854209的顺序,可以看到:最⼤的数9已“沉底”,成为最下⾯⼀个数,⽽⼩的数“上升”。
最⼩的数0已向上“浮起”⼀个位置。
经第⼀趟(共5次)后,已得到最⼤的数。
然后进⾏第⼆趟⽐较,对余下的前⾯5个数按上法进⾏⽐较,如下图所⽰。
8 5 5 5 55 8 4 4 44 4 8 2 22 2 2 8 00 0 0 0 8第1次第2次第3次第4次结果经过4次⽐较,得到次⼤的数8。
如此进⾏下去。
可以推知,对6个数要⽐较5趟,才能使6个数按⼤⼩顺序排列。
在第⼀趟中要进⾏两个数之间的⽐较共5次,在第⼆趟中⽐4次……第5趟⽐1次。
如果有n个数,则要进⾏n-1趟⽐较。
在第1趟⽐较中要进⾏n-1次两两⽐较,在第j趟⽐较中要进⾏n-j次两两⽐较。
设n=10,定义数组长度为11,本例中对a[0]不⽤,只⽤a[1]到a[10],以符合⼈们的习惯。
4.程序源代码:main(){int a[11];int i,j,t;printf("input 10 numbers:\n");for (i=1;i<11;i++)scanf("%d",&a[i]);printf("\n");for(j=1;j<=9;j++)for(i=1;i<=10-j;i++)if (a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}printf("the sorted numbers :\n");for(i=1;i<11;i++)printf("%d ",a[i]);}5.程序运⾏结果:input 10 numbers:1 0 4 8 12 65 -76 100 -45 123the sorted numbers:-76 -45 0 1 4 8 12 65 100 1236.案例扩展:⽤起泡法对10个数排序(由⼤到⼩)。
C语言考试题及答案
C语言考试题一、单项选择题(每题2分,共40分)1、一个算法应该具有“确定性”等五个特性,下面对另外4个特性的描述中错误的是(B)A、有零个或多个输入B、有零个或多个输出C、有穷性D、可行性2、C语言中最简单的数据类型包括(B)A、整型、实型、逻辑型B、整型、实型、字符型C、整型、字符型、逻辑型D、整型、实型、逻辑型、字符型3、设a和b均为double型变量,且a=5。
5、b=2。
5,则表达式(int)a+b/b的值是(D)A、 6.500000B、 6C、 5。
500000D、 6。
0000004、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是(B)A、 INPUT x、y、z;B、 scanf("%d%d%d",&x,&y,&z);C、 scanf(”%d%d%d”,x,y,z);D、 read("%d%d%d”,&x,&y,&z);5、设 int x=1, y=1;表达式(!x||y——)的值是(B)。
A、0B、1C、2D、—16、对两个字符数组a和b进行初始化char a[]="ABCDEF”;char b[ ]={'A',’B’,'C’,’D','E’,'F'}; 则以下叙述正确的是(D)。
A、a与b数组完全相同B、a与b长度相同C、a和b中都存放字符串D、a数组比b数组长度长7、为了避免在嵌套的条件语句if――else中产生二义性,c语言规定:else子句总是与(B)配对.A、缩排位置相同的ifB、其之前最近的ifC、其之后最近的ifD、同一行上的if8、下面不正确的字符串常量是(A)A、 'abc’B、”12'12”C、 "0”D、 " ”9、以下错误的if语句是(C).A、 if(x〉y) z=x;B、 if(x= =y) z=0;C、 if(x!=y) printf(”%d",x) else printf("%d”,y);D、 if(x<y) { x++;y-—;}10、若有说明:int a[3][4];则对a数组元素的非法引用是( D)。
3专插本肇庆学院C语言重点程序题
#include <stdio.h> void main() { char c1,c2; c1=getchar(); printf("%c,%d\n",c1,c1); c2=c1+32; printf("%c,%d\n",c2,c2); } 运行情况: A↙ A,65 a,97
用选择法对10个整数按由大到小顺序排序
#include <stdio.h> void main() { void sort(int x[ ] ,int n); int *p,i,a[10] ; p=a; for(i=0;i<10;i++) scanf(″%d″,p++) ; p=a; sort(p,10) ; for(p=a,i=0;i<10;i++) {printf(″%d″,*p) ;p++; }
有一分数列 2/1 ,3/2 , 5/3 ,8/5 ,13/8 ,21/13 , ……求出这个数列的前 20 项之和。
main() {int n,t,number=20; float a=2;b=1;s=0; for(n=1;n<=number;n++) {s=s+a/b; t=a,a=a+b,b=t; } printf("s=%9.6f\n",s); }
编一个程序,将两个字符串连接起来,不要用 strcat 函数
main() {char s1[80],s2[40]; int i=0,j=0; scanf("%s",s1); scanf("%s",s2); while(s1[i]!='\0')i++; while(s2[j]!='\0')s1[i++]=s2[j++]; s1[i]='\0'; printf("s=%s\n",s1); }
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
输入10个数,用“起泡法”对10个数排序(由小到大)。
“起泡法”算法:以六个数9、8、5、4、2、0为例。
第1趟比较(p83,图6.1)第2趟比较(p84,图6.2)
第1趟比较后,剩5个数未排好序;两两比较5次
第2趟比较后,剩4个数未排好序;两两比较4次
第3趟比较后,剩3个数未排好序;两两比较3次
第4趟比较后,剩2个数未排好序;两两比较2次
第5趟比较后,全部排好序;两两比较1次
算法结论:对于n个数的排序,需进行n-1趟比较,第j趟比较需进行n-j次两两比较。
程序流程图:(用两层嵌套循环实现)
程序:设需排序的数有10个,定义数组大小为11,使用a[1]~a[10]存放10个数,a[0]不用。
main()
int a[11]; /* 用a[1]~a[10], a[0]不用*/
int i,j,t;/* i,j作循环变量,t作两两比较的临时变量*/
printf("input 10 numbers:\n");
for(i=1;i<11;i++)
scanf("%d",&a[i]);/* 输入10个整数*/
printf("\n");
for(j=1;j<=9;j++) /* 第j趟比较*/
for(i=1;i<=10-j; i++) /* 第j趟中两两比较10-j次*/
if (a[i] > a[i+1]) /* 交换大小*/
{ t = a[i]; a[i] = a[i+1]; a[i+1] = t; }
printf("the sorted numbers:\n");
for(i=1;i<11;i++)
printf("%d",a[i]);
}。