c语言的题目及答案.docx
- 文档编号:15074799
- 上传时间:2023-06-30
- 格式:DOCX
- 页数:31
- 大小:28.38KB
c语言的题目及答案.docx
《c语言的题目及答案.docx》由会员分享,可在线阅读,更多相关《c语言的题目及答案.docx(31页珍藏版)》请在冰点文库上搜索。
c语言的题目及答案
4,下列不是赋值语句的是__________.
A.A++ B. a= =b C. a+=b D. a=1
5,表示关系x≥y≥z,应使用C语言表达式__________
A.(x>=y)&&(y>=z) B.(x>=y)AND(y>=z)
C.(x>=y>=z) D.(x>=z)&(y>=z)
6,voidmain()
{
int j,k,p,s;
s=0;
for(j=1;j<=3;j++)
{
p=1;
for(k=1;k<=j;k++)
p=p*k;
s=s+p;
}
printf(“s=%d\n”,s); }
该程序的运行结果是__________________.
1.设变量已正确定义,则以下能正确计算f=n!
的程序段是
A) f=0;
for(i=1;i<=n;i++)f*=i;
B) f=1;
for(i=1;i C) f=1; for(i=n;i>1;i++)f*=i; D) f=1; for(i=n;i>=2;i--)f*=i; 2. #include voidmain() { inta=1,b; for(b=1;b<=10;b++) { if(a>=8) break; if(a%2==1) { a+=5; continue; } a-=3; } printf("%d\n",b); } 程序运行后的输出结果是 A)0 B)4 C)6 D)7 3.若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0) s=a; for(b=1;b<=c;b++)s=s+1; 则与上述程序段功能等价的赋值语句是 A)s=a+b; B)s=a+c; C)s=s+c; D)s=b+c; 4.以下是引用片段: main () { int n; float s; s=1.0; for(n=10;n>1;n--) s=s+1/n; print("%6.4f\n",s); } 程序运行后输出结果错误,导致错误结果的程序行是 A)s=1.0; B)for(n=10;n>1;n--) C)s=s+1/n; D)printf("%6.4f/n",s); 7.编写函数fun,功能是: 根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。 S=1+1/(1+2)+1/(1+2+3)+…….+1/(1+2+3+4+……+n) 8.编写程序,子函数的参数是数组或指针,子函数的功能: 求倒序。 主函数用来获取数据。 9.编写程序,求两个矩阵的加,减,乘。 数组: 5、下列对数组定义不正确的语句是______________. A、intm[5]; B、charb[]={‘h’,‘e’}; C、inta[10]={1,6,8,4}; D、char p[]; 21.设有数组定义: chararray[]=“China”;则数组所占的存贮空间为__________. A.4个字节 B.5个字节 C.6个字节 D.7个字节 1.以下为一维整型数组a的正确说明是_________. A)inta(10);b)intn=10,a[n]; c)intn;d)#defineSIZE10 scanf("%d",&n);inta[SIZE]; inta[n]; 2.以下对二维数组a的正确说明是______. a)inta[3][];b)floata(3,4); c)doublea[1][4];d)floata(3)(4); 3.若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为______.(正确) (假设a[0][0]位于数组的第一个位置上。 ) a)i*m+jb)j*m+ic)i*m+j-1d)i*m+j+1 4.若二维数组a有m列,则在a[i][j]前的元素个数为_______. a)j*m+ib)i*m+jc)i*m+j-1d)i*m+j+1 5.若有以下程序段: inta[]={4,0,2,3,1},i,j,t; for(i=1;i<5;i++) { t=a[i]; j=i-1; while(j>=0&&t>a[j]) { a[j+1]=a[j]; j--; } a[j+1]=t; } ...... 则该程序段的功能是_________. a)对数组a进行插入排序(升序) b)对数组a进行插入排序(降序) c)对数组a进行选择排序(升序) d)对数组a进行选择排序(降序 6.有两个字符数组a、b,则以下正确的输入语句是______. a)gets(a,b);b)scanf("%s%s",a,b); c)scanf("%s%s",&a,&b);d)gets("a"),gets("b"); 7.下面程序段的运行结果是_______. chara[7]="abcdef"; charb[4]="ABC"; strcpy(a,b); printf("%c",a[5]); a)空格b)\0c)ed)f 8.判断字符串s1是否大于字符串s2,应当使用_______. a)if(s1>s2)b)if(strcmp(s1,s2)) c)if(strcmp(s2,s1)>0)d)if(strcmp(s1,s2)>0) 9.下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间用空格分隔,请选择填空。 #include main() { chars[80],c1,c2=’’; inti=0,num=1; gets(s); while(s[i]! =’\0’) {c1=s[i]; if(i==0)c2=’’; elsec2=s[i-1]; if(_B__)num++ i++; } printf("Thereare%dwords.\n",num); } a)c1==’’&&c2==’’b)c1! =’’&&c2==’’ c)c1==’’&&c2! =’’d)c1! =’’&&c2! =’’ 5.main() { inta[5], k; for(k=0;k<5;k++) a[k]=10*k; printf(“%d”,a[k-1]); } 该程序的运行结果是_________________. 3、以下关于数组的描述正确的是() A数组的大小是固定的,但可以有不同的类型的数组元素 B数组的大小是可变的,但所有数组元素的类型必须相同 C数组的大小是固定的,所有数组元素的类型必须相同 D数组的大小是可变的,可以有不同类型的数组元素 用冒泡法对10个数由小到大排序 4.从键盘上输入10个评委的分数,去掉一个最高分,去掉一个最低分,求出其余8个人的平均分,输出平均分,最高分,最低分。 6、若有以下定义,则______和______是对数组元素的正确引用。 int a[5],*p=a; A.*&a[6] B、*p+8 C、*(a+2) D、*p 利用for循环编写一段能产生如下结果的程序。 1 22 333 4444 55555 2、数组定义为"inta[4];下列哪一个引用是错误的() A、*a B、*(a+2) C、&a[2] D、++a 假定int类型变量占用两个字节,其有定义: intx[10]={0,2,4};,则数组x在内存中所占字节数是 A、3B、6C、10D、20 有一个一维数组,内放20个学生成绩,写一个函数,求出平均分、最高分、最低分,在主函数中进行调用。 将数组a[20]中20个整数按相反顺序存放 对二维数组a初始化如下: inta[3][4]={{5,10},{3,6,9,12},{0}}; 则数组元素a[0][1]的值是__________,a[2][1]的值是____________。 10.若有以下数组说明,则数值最小的和最大的元素下标分别是____。 inta[12]={1,2,3,4,5,6,7,8,9,10,11,12}; A.1,12B.0,11C.1,11D.0,12 11.若有以下说明,则数值为4的表达式是。 inta[12]={1,2,3,4,5,6,7,8,9,10,11,12}; charc='a’,d,g; A.a[g-c]B.a[4]C.a[‘d’-‘c’]D.a[‘d’-c] 8.以下合法的数组说明是( )。 (1)chara[6]="string"; (2)inta[5]={0,1,2,3,4,5}; (3)chara="string"; (4)INTa[]={0,12,3,4,5}; 题目: 求一个3*3矩阵对角线元素之和 1.程序分析: 利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。 2.程序源代码: main() { floata[3][3],sum=0; inti,j; printf("pleaseinputrectangleelement: \n"); for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%f",&a[i][j]); for(i=0;i<3;i++) sum=__________; printf("duijiaoxianheis%6.2f",sum); } 题目: 将一个数组逆序输出。 1.程序分析: 用第一个与最后一个交换。 2.程序源代码: #defineN5 main() {inta[N]={9,6,5,4,1},i,temp; printf("\noriginalarray: \n"); for(i=0;i printf("%4d",a[i]); for(i=0;i {temp=a[i]; a[i]=a[_____]; a[_______]=temp; } printf("\nsortedarray: \n"); for(i=0;i printf("%4d",a[i]); } 循环 #include voidmain() { inti,j,a=0; for(i=0;i<2;i++) { for(j=0;j<4;j++) { if(j%2)break; a++; } a++; } printf("%d\n",a); } 3判断char型变量ch是否为大写字母的正确表达式是()。 A)'A'<=ch<='Z' B)(ch>='A')&(ch<='Z') C)(ch>='A')&&(ch<='Z') D)('A'<=ch)AND('Z'>=ch) 7.若有“inta=1,x=1;”,则循环语句“while(a<10)x++;a++;”的循环执行___。 A.无限次B.不确定次C.10次D.9次 8.语句while(! E);中的表达式! E等价于。 A.E==0B.E! =1C.E! =0D.E==1 4.设有程序 #include main() { inti,j; for(i=0,j=1;i<=j+1;i+=2,j--) printf("%d\n",i); } 在运行上述程序时,for语句中循环体的执行次数是( ) (1)3 (2)2 (3)1 (4)0 5.在下述选项时,没有构成死循环的程序是( ) (1)inti=100 while (1) { i=i%100+1; if(i>100) break; } (2)for(;;); (3)intk=1000; do { ++k; }while(k>=10000); (4)ints=36; while(s);--s; 6.假定a和b为int型变量,则执行下述语句组后,b的值为( )。 a=1; b=10; do { b-=a; a++; }while(b--<0); (1)9 (2)-2 (3)-1 (4)8 24.下面的语句组所表示的数学函数关系是( )。 y=-1; if(x! =0) if(x>0) y=1; else y=0; 25.以下叙述正确的是( )。 (1)do-while语句构成的循环不能用其他语句构成的循环来代替 (2)do-while语句构成的循环只能用break语句退出 (3)do-while语句构成的循环,在while后的表达式为非零时结束循环 (4)do-while语句构成的循环,在while后的表达式为零时结束循环 用循环语句输出下面图形 **** **** **** **** #include voidmain() { inti,j,k,n=20; for(i=1;i<=n;i++) { for(j=1;j<=n;j++) printf("*"); printf("\n"); for(k=1;k<=i;k++) printf(""); } } 题目: 输入三个整数x,y,z,请把这三个数由小到大输出。 1.程序分析: 我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。 2.程序源代码: main() { intx,y,z,t; scanf("%d%d%d",&x,&y,&z); if(x>y) {______________}/*交换x,y的值*/ if(x>z) {t=z;z=x;x=t;}/*交换x,z的值*/ if(y>z) {t=y;y=z;z=t;}/*交换z,y的值*/ printf("smalltobig: %d%d%d\n",x,y,z); } #include"stdio.h" main() { inti,j,result; printf("\n"); for(i=1;i<10;i++) {for(j=1;j<10;j++) { result=____; printf("%d*%d=_____",i,j,result);/*-3d表示左对齐,占3位*/ } printf("\n");/*每一行后换行*/ } } 题目: 判断101-200之间有多少个素数,并输出所有素数。 1.程序分析: 判断素数的方法: 用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。 2.程序源代码: #include"math.h" main() { intm,i,k,h=0,leap=1; printf("\n"); for(m=101;_____;m++) {k=sqrt(____); for(i=2;i<=k;i++) if(m%i==0) {_____=0;break;} if(leap){printf("%-4d",m);h++; if(h%10==0) printf("\n"); } leap=1; } printf("\nThetotalis%d",h); } 题目: 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。 例如: 153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 1.程序分析: 利用for循环控制100-999个数,每个数分解出个位,十位,百位。 2.程序源代码: main() { inti,j,k,n; printf("'waterflower'numberis: "); for(n=100;n<1000;n++) { i=_____;/*分解出百位*/ j=_______;/*分解出十位*/ k=_______;/*分解出个位*/ if(_____________) { printf("%-5d",n); } } printf("\n"); } 题目: 利用条件运算符的嵌套来完成此题: 学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。 1.程序分析: (a>b)? a: b这是条件运算符的基本例子。 2.程序源代码: main() { intscore; chargrade; printf("pleaseinputascore\n"); scanf("%d",&score); grade=______? ______: (_____? ____: _____); printf("%dbelongsto%c",score,grade); } 题目: 输入两个正整数m和n,求其最大公约数和最小公倍数。 1.程序分析: 利用辗除法。 2.程序源代码: main() { inta,b,num1,num2,temp; printf("pleaseinputtwonumbers: \n"); scanf("%d,%d",_____,________); if(num1) {temp=num1; num1=num2; num2=temp; } a=num1;b=num2; while(b! =0)/*利用辗除法,直到b为0为止*/ { temp=_______; a=b; b=temp; } printf("gongyueshu: %d\n",a); printf("gongbeishu: %d\n",num1*num2/a); ) 题目: 有一分数序列: 2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。 1.程序分析: 请抓住分子与分母的变化规律。 2.程序源代码: main() { intn,t,number=20; floata=2,b=1,s=0; for(n=1;n<=number;n++) { s=_______; t=a;a=a+b;b=t;/*这部分是程序的关键,请读者猜猜t的作用*/ } printf("sumis%9.6f\n",s); } 题目: 求1+2! +3! +...+20! 的和 1.程序分析: 此程序只是把累加变成了累乘。 2.程序源代码: main() { floatn,s=0,t=1; for(n=1;n<=20;n++) { ______; ______; } printf("1+2! +3! ...+20! =%e\n",s); } 指针: 一、选择题 1.变量的指针,其含义是指该变量的_________. a)值 b)地址 c)名 d)一个标志 2.若有语句int*point,a=4;和point=&a;下面均代表地址的一组选项是_____. a)a,point,*&a b)&*a,&a,*point c)*&point,*point,&a d)&a,&*point,point 3.若有说明;int*p,m=5,n;以下正确的程序段的是________. a)p=&n; b)p=&n; scanf("%d",&p); scanf("%d",*p); c)scanf("%d",&n); d)p=&n; *p=n; *p=m; 4.下面程序段的运行结果是_________. char*s="abcde"; s+=2;printf("%d",s); a)cde b)字符'c' c)字符'c'的地址 d)无确定的输出结果 5.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是________. a)c=*p1+*p2; b)p2=c c)p1=p2 d)c=*p1*(*p2); 6.以下正确的程序段是_________. a)charstr[20]; b)char*p; scanf("%s",&str); scanf("%s",p); c)charstr[20]; d)charstr[20],*p=str; scanf("%s",&str[2]); scanf("%s",p[2]); 7.若有说明语句 chara[]="Itismine"; char*p="Itismine"; 则以下不正确的叙述是__
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 题目 答案