大连理工大学c语言题库2
- 格式:doc
- 大小:42.00 KB
- 文档页数:4
C编程(C语⾔程序设计,⼤连理⼯⼤学MOOC)仅作参考,请指正(都提交通过,但是也有错误,第22题的错误,已经修正)1、Hello World!1 #include <stdio.h>2int main()3 {4 printf("Hello World!");5return0;6 }View Code2、我爱编程1 #include <stdio.h>2int main()3 {4 printf("Hello C!\n");5 printf("I like programming.");6return0;7 }View Code3、计算两个整数的乘积1 #include <stdio.h>2int main()3 {4int a,b;5 scanf("%d%d",&a,&b);6 printf("%d",a*b);7return0;8 }View Code4、计算圆的⾯积1 #include <stdio.h>2 #include <string.h>3#define PI 3.14154int main()5 {6 printf("Area=%5.2f\n", PI*4.3*4.3);7return0;8 }View Code5、计算平⽅根1 #include <stdio.h>2 #include <math.h>3int main()4 {5double x;6 scanf("%lf", &x);7 printf("%f\n", sqrt(x));8return0;9 }View Code6、输出逆序数1 #include <stdio.h>2 #include <string.h>3 #include <math.h>4int main()5 {8while(x)9 {10 y = y*10 + x%10;11 x /= 10;12 }13 printf("y=%d\n", y);14return0;15 }View Code7、交换两个变量1 #include<stdio.h>2 #include<math.h>34int main()5 {6int a,b,t;7 scanf("%d,%d",&a,&b);8 t = a;9 a = b;10 b = t;11 printf("%d,%d",a,b);12return0;13 }View Code8、输出字符ASCII码1 #include<stdio.h>2 #include<math.h>34int main()5 {6int a;7 a = getchar();8 printf("ASCII=%d",a);9return0;10 }View Code9、求⼀元⼆次⽅程的两个实根1 #include<stdio.h>2 #include<math.h>34int main()5 {6float x1,x2;7 x1 = (-1 + sqrt(1+4*2))/2.0;8 x2 = (-1 - sqrt(1+4*2))/2.0;9 printf("x1=%.4f\n",x1);10 printf("x2=%.4f\n",x2);11return0;12 }View Code10、计算银⾏存款本息1 #include<stdio.h>2 #include<math.h>34int main()5 {6int money,year;7double rate,sum = 0;8 scanf("%d%d%lf",&money,&year,&rate);9 sum = money*pow((1+rate),year);1011 printf("sum=%7.2f",sum);12return0;13 }View Code1 #include <stdio.h>2 #include <stdio.h>3 #include <stdlib.h>45int main()6 {7char ch;8 ch = getchar();9if(ch>='a'&&ch<='z')10 ch -= 32;11else12 ch += 32;13 putchar(ch);14return0;15 }View Code12、计算分段函数1 #include <stdio.h>2int main(void)3 {4double x, y;5 scanf("%lf",&x);6if ( x<0 )7 y=0;8else if( x<=15 )9 y=4*x/3;10else11 y=2.5*x-10.5;12 printf("y=%.2f",y);13return0;14 }View Code13、百分制成绩转换为五级分制成绩1 #include <stdio.h>2 #include <stdio.h>3 #include <stdlib.h>45int main()6 {7float achievment;8 scanf("%f",&achievment);910int a = achievment;11char ch;1213switch(a/10){14case10:15case9:ch = 'A';break;16case8:ch = 'B';break;17case7:ch = 'C';break;18case6:ch = 'D';break;19default:ch = 'E';20 }21 printf("grade:%c\n",ch);2223return0;24 }View Code14、输出⽔仙花数1 #include <stdio.h>2 #include <stdio.h>3 #include <stdlib.h>45int main()6 {7int i;8 scanf("%d",&i);910int a = i%10, b = i/10%10, c = i/100;14 printf("%d不是⽔仙花数!",i);1516return0;17 }View Code15、⽤for语句实现判断并求和1 #include<stdio.h>23int main()4 {5int sum = 0;6for(int i=1; i<=100; ++i)7 {8if(i%3==0 && i%5==1)9 sum += i;10 }11 printf("sum=%d",sum);1213return0;14 }View Code16、⽤do while 语句实现从键盘输⼊⼀组整数,求平均值 1 #include<stdio.h>23int main()4 {5int i=0, x;6float sum = 0;7do{8 scanf("%d",&x);9if(x<0) break;10 sum += x;11 i++;12 }while(x>=0);13 printf("AVE=%.2f\n",sum/i);14return0;15 }View Code17、⽤while语句实现计算圆周率 pi (3.14) 的近似值1 #include<stdio.h>2 #include <math.h>3#define EPS 1e-54int main()5 {6float pi = 0, sign = 1, x = 1;78while(fabs(sign/x) > EPS)9 {10 pi += sign/x;11 x += 2;12 sign = -sign;13 }14 printf("pi=%.2f\n",pi*4);15return0;16 }View Code18、求两个整数的最⼤公约数1 #include<stdio.h>2 #include<stdlib.h>34int GCD(int x, int y);5int main()6 {7int a,b;8 scanf("%d%d",&a,&b);9 printf("GCD=%d\n",GCD(a,b));1213int GCD(int x, int y){14return y == 0 ? x : GCD(y, x%y);15 }View Code19、找素数1 #include<stdio.h>2 #include<stdlib.h>34int isPrime(int x);5int main()6 {7int a;8 scanf("%d",&a);9for(int i=a+1;;++i){10if(isPrime(i)){11 printf("prime=%d\n",i);12break;13 }14 }15return0;16 }1718int isPrime(int x){19for(int i=2; i<x; ++i)20if(x%i==0)21return0;22return1;23 }View Code20、斐波那契数列求和1 #include<stdio.h>2 #include<stdlib.h>34int main()5 {6int sum = 0, a=1,b=1;7for(int i=0;i<20;i+=2){8 sum += a+b;9 a = a+b;10 b = a+b;11 }12 printf("sum=%d\n",sum);13return0;14 }View Code21、逆序存放数据1 #include<stdio.h>2#define N 1003int main()4 {5int arr[N] = {0}, n=6;6for(int i=n-1; i>=0; --i)7 scanf("%d",&arr[i]);8for(int j=0; j<n; ++j)9 printf("%d\n",arr[j]);10return0;11 }View Code22、找出⼀维整型数组中的次最⼤值#include<stdio.h>#define N 5/*设次⼤值⼀定存在*/int main(){int i, j, arr[N+1] = {0};scanf("%d",&arr[i]);/* 冒泡排序 */for(i=0; i<N-1; ++i)for(j=0; j<N-i-1; ++j)if(arr[j]<arr[j+1]){int t = arr[j];arr[j] = arr[j+1];arr[j+1] = t;}/* 求次最⼤值下标i*/for(i=1; arr[0]==arr[i] && i<N; ++i);/*if(i==N)printf("次⼤值不存在!\n");*/printf("次最⼤值=%d",arr[i]);return0;}View Code/*求最⼤值、次⼤值可以不⽤排序*/#include <stdio.h>#define N 5int main(){int i, arr[N] = {0};int max1, max2;scanf("%d%d",&arr[0],&arr[1]);max1 = max2 = arr[0];arr[1] > max1 ? (max1 = arr[1]) : (max2 = arr[1]); for(i=2; i<N; ++i){scanf("%d",&arr[i]);if(arr[i]>max1){max2 = max1;max1 = arr[i];}else if(arr[i]>max2){max2 = arr[i];}}/*if(max1==max2)printf("次⼤值不存在!\n");elseprintf("次最⼤值=%d",max2);*//*次最⼤值 max2 是存在的 */printf("次最⼤值=%d",max2);return0;}View Code#include <stdio.h>#include <limits.h>#define N 5int main(){int i, arr[N] = {0};int max1, max2;max1 = max2 = INT_MIN;for(i=0; i<N; ++i){scanf("%d",&arr[i]);if(arr[i]>max1){max2 = max1;max1 = arr[i];}else if(arr[i]>max2){max2 = arr[i];}}/* 次最⼤值 max2 */if(max1 == INT_MIN)printf("次⼤值不存在!\n");elseprintf("次最⼤值=%d",max2);View Code23、调整最⼤值的位置1 #include<stdio.h>2#define N 1003int main()4 {5int arr[N] = {0}, n=6, max=0, maxi=0;6 scanf("%d",&arr[0]);7 max=arr[0];89for(int i=1; i<n; ++i){10 scanf("%d",&arr[i]);11if(arr[i]>max){12 max = arr[i];13 maxi = i;14 }1516 }17int t = arr[n-1];18 arr[n-1] = arr[maxi];19 arr[maxi] = t;2021for(int j=0; j<n; ++j)22 printf("%d\n",arr[j]);23return0;24 }View Code24、连接两个字符串1 #include<stdio.h>2 #include<string.h>3#define N 1004int main()5 {6char a[2*N] = "", b[N] = "";7 scanf("%s%s",a,b);8/* strcpy(&a[strlen(a)],b);//没有⽤strcat⽤的strcpy 9*/10//不⽤函数11int i;12for(i=0; a[i]; ++i);//求字符串'\0'下标13char *p = a+i, *q = b;14while(*q)15 {16 *p++ = *q++;17 }18 *p = '\0';1920 printf("%s\n",a);21return0;22 }View Code1 #include<stdio.h>2 #include<string.h>3#define N 1004int main()5 {6char a[2*N] = "", b[N] = "";7 scanf("%s%s",a,b);89char *p = a, *q = b;10while(*p) p++;11while((*p++=*q++)!='\0');1213 printf("%s\n",a);14return0;15 }View Code25、求矩阵外围元素之和4 {5int sum=0, n=3;6int *arr = (int*)malloc(sizeof(int)*n*n); //⼀维模拟⼆维数组 78for(int i=0; i<n*n; ++i)9 {10 scanf("%d",&arr[i]);11 }1213for(int i=0; i<n; ++i)14 {15for(int j=0; j<n; ++j)16 {17if(i==0||i==n-1 || j==0|| j==n-1 )18 {19 sum += arr[i*n+j]; //⼀⾏n个20 }21 }22 }2324 printf("%d",sum);2526return0;27 }View Code26、求矩阵主对⾓线和副对⾓线元素之和1 #include <stdio.h>2#define N 53int main()4 {5char str[N][N];6int i,j,sum=0;78for(i=0; i<N; ++i)9for(j=0; j<N; ++j)10 scanf("%d",&str[i][j]);1112for(i=0; i<N; ++i)13for(j=0; j<N; ++j)14 {15if(i==j)16 sum += str[i][j];17if(i==N-j-1)18 sum += str[i][j];19 }20 printf("sum=%d\n",sum);21return0;22 }View Code27、将字符串的⼩写字母转换为⼤写字母1 #include <stdio.h>2#define N 10003int main()4 {5char str[N]="";6int i=0;7 gets(str);89while(str[i]){10if(str[i]>='a'&&str[i]<='z')11 str[i] -= 32;12 i++;13 }14 printf("%s\n",str);15return0;16 }View Code28、编写函数,计算银⾏存款本息并输出1 #include <stdio.h>5double sum = money;6while(year--){7 sum = sum*(1+rate);8 }9return sum;10 }11int main()12 {13int money, year;14double rate, sum=0;15 scanf("%d%d%lf",&money,&year,&rate);16 sum = fun(money,year,rate);17 printf("sum=%.2f",sum);18return0;19 }View Code29、数值转换1/*位运算*/2 #include <stdio.h>3void fun(int x)4 {5int j=31;/*按32位定义*/6while(!((x&(1<<j))>>j))/*去前⾯的0*/7 j--;8for(; j>=0; j--)/*按位输出*/9 printf("%d", (x&(1<<j))>>j);10 }11int main()12 {13int x;14 scanf("%d",&x);15 fun(x);16return0;17 }View Code30、求⼀组数中⼤于平均值的数的个数 1 #include <stdio.h>2#define N 10034int main()5 {6int num[N] = {0},count=0;7double sum = 0;8for(int i=0; i<10; ++i){9 scanf("%d",&num[i]);10 sum += num[i];11 }12for(int j=0; j<10; ++j)13if(num[j]>sum/10)14 count++;15 printf("%d",count);16return0;17 }View Code31、求x的n次⽅1 #include <stdio.h>2double cube(double x,int n)3 {4if(n ==1)5return x;6else7return x*cube(x,n-1);8 }9int main()10 {11double x,y;12int n;13 scanf("%lf%d",&x,&n);14 y=cube(x,n);15 printf("%f",y);View Code32、输出最⼤、最⼩数1 #include <stdio.h>2void fun(int *arr,int *max,int *min){3 *max = *min = arr[0];4for(int i=1; i<10; ++i){5if(arr[i]>*max)6 *max = arr[i];7if(arr[i]<*min)8 *min = arr[i];9 }10 }11int main()12 {13int max,min;14int arr[10] = {0};15for(int i=0; i<10; ++i){16 scanf("%d",&arr[i]);17 }18 fun(arr,&max,&min);19 printf("max=%d,min=%d",max,min);20return0;21 }View Code33、任意整数转换为千分位分隔的字符形式1 #include <stdio.h>2#define N 1003int main()4 {5int n;6 scanf("%d",&n);7int arr[N] = {0},index = 0;8while(n)9 {10 arr[index++] = n%10;11 n /= 10;12 }13for(int i=index-1; i>=0; --i)14 {15 printf("%d",arr[i]);16if(i%3==0&&i)17 printf(",");18 }19return0;20 }View Code34、利⽤指针编写程序,统计字符串的长度1 #include <stdio.h>2#define N 1003int main()4 {5char str[N] = "";6 gets(str);7char *p = str;8int len = 0;9while(*p)10 {11 len++;12 p++;13 }14 printf("Length of the string is %d\n",len);15return0;16 }View Code35、利⽤指针编程,将数组中所有元素的值对称交换 1 #include <stdio.h>2#define N 105int arr[N] = {0};6for(int i=0; i<N; ++i)7 scanf("%d",&arr[i]);8int *p = arr, *q = arr+N-1;9while(p<q)10 {11int t = *p;12 *p = *q;13 *q = t;14 p++, q--;15 }16for(int j=0; j<N; ++j)17 printf("%2d",arr[j]);18return0;19 }View Code36、利⽤指针编写程序,求⼀维数组中的最⼤和最⼩的元素值1 #include <stdio.h>2#define N 103int main()4 {5int arr[N] = {0};6for(int i=0; i<N; ++i)7 scanf("%d",&arr[i]);8int max, min;9 max = min = arr[0];10for(int j=1; j<N; ++j)11 {12if(arr[j]>max)13 max = arr[j];14if(arr[j]<min)15 min = arr[j];16 }17 printf("max=%d,min=%d",max,min);18return0;19 }View Code37、利⽤指针编写⼀函数,输⼊3个整数,按由⼤到⼩的顺序将它们输出1 #include <stdio.h>2 #include <stdlib.h>3 #include <string.h>4#define N 25656void swap(int *a, int *b)7 {8int t = *a;9 *a = *b;10 *b = t;11 }12int main( )13 {14int arr[N] = {0};15for(int i=0; i<3; ++i)16 scanf("%d",&arr[i]);17if(arr[0]<arr[1])18 swap(&arr[0],&arr[1]);19if(arr[0]<arr[2])20 swap(&arr[0],&arr[2]);21if(arr[1]<arr[2])22 swap(&arr[1],&arr[2]);23for(int j=0;j<3; ++j)24 printf("%3d",arr[j]);25return0;26 }View Code38、⽤指向数组的指针变量实现输出指定学⽣的全部成绩1 #include <stdio.h>2 #include <stdlib.h>3 #include <string.h>4#define N 25656int main( )7 {8float score[][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}};9float (*p)[4] = score;10int n;11 scanf("%d",&n);12for(int i=0;i<4;++i)13 printf("%8.2f",p[n][i]);14return0;15 }View Code39、某班有5名同学,建⽴⼀个学⽣的简单信息表,包括学号、姓名、3门课程的成绩,编写程序,计算每名学⽣的平均成绩及名次1/*2测试数据3201701 zhao 29.8 85.4 65.44201702 qian 96.5 87.5 65.45201703 sun 85.4 65.4 84.66201704 li 63.4 95.4 86.37201705 zhou 65.9 84.6 97.58*/9 #include<stdio.h>1011struct student{12long no;13char name[20];14float score[3];15 }stu[5],*p;1617int rank(float *ave, float score){18int rank = 5;19for(int i=0; i<5; ++i)20if(ave[i]<score)21 rank--;22return rank;23 }2425int main()26 {27float ave[5] = {0.0};28int index = 0;29for(p=stu; p<stu+5; ++p){ //stu+530 scanf("%ld %s %f %f %f",31 &p->no,p->name,&p->score[0],&p->score[1],&p->score[2]);32 ave[index++] = (p->score[0]+p->score[1]+p->score[2])/3.0;33 }3435 printf("Number: Name: score: Average: rank:\n");36for(index=0,p=stu; p<stu+5; ++p){37 printf("%-9ld%-10s%-5.1f%-5.1f%-8.1f%-10.1f%-d\n",38 p->no,p->name,p->score[0],p->score[1],39 p->score[2],ave[index++],rank(ave,ave[index]));40 }41return0;42 }View Code40、某班有10名同学,建⽴学⽣结构体类型,包括学号、姓名、3门课程的成绩,编写程序,读⼊已准备好的⽂本⽂件student1.txt,为结构体数组变量赋值,计算每名学⽣的平均成绩及名次。
转过不少资料神马的。
我也发一个回报一下~祝大家都有个好成绩~ 【第一套】一、单项选择1.下列数据中,为字符串常量的是(d)。
A、'A'B、How do you do.C、$abcD、"house"2.以下所列的C语言常量中,错误的是(b )。
A、0xFFB、1.2e0.5C、2LD、'\72'3.以下程序的输出结果是(d。
main(){float x=3.6;int i;i=(int)x;printf("x=%f,i=%d\n",x,i);}A、x=3.,i=4B、x=3 i=3.C、x=3,i=3D、x=3.,i=34.若k是整型,则以下程序段的执行结果是:(bk=-3;if(k<=0) printf("####")else printf("&&&&");A、####B、有语法错误,无结果C、&&&&D、####&&&&5.若x=2,y=3则x||y的结果是( c)。
A、3B、0C、1D、26.针对下列程序段回答问题( ).for(t=1;t<=100;t++){scanf("%d",&x);if(x<0) continue;printf("%3d",t);}A、x>=0时什么也不输出B、最多允许输出100个非负整数C、printf函数永远也不执行D、当x<0时整个循环结束7.以下程序的执行结果是( )。
main(){ int num = 0;while( num <= 2 ) { num++; printf( "%d,",num ); } }A、0,1,2B、1,2,3,C、1,2,3,4,D、1,2,8.选择正确的输入语句( )。
【第一套】一、单项选择1.下列数据中,为字符串常量的是(D)。
A、'A’B、How do you do.C、$abcD、”house"2.以下所列的C语言常量中,错误的是(b )。
A、0xFFB、1。
2e0。
5C、2LD、'\72’3.以下程序的输出结果是(D)。
main(){float x=3。
6;int i;i=(int)x;printf(”x=%f,i=%d\n”,x,i);}A、x=3.600000,i=4B、x=3 i=3.600000C、x=3,i=3D、x=3.600000,i=34.若k是整型,则以下程序段的执行结果是:(B ) k=—3;if(k<=0)printf("####”);else printf(”&&&&”);A、####B、有语法错误,无结果C、&&&&D、####&&&&5.若x=2,y=3则x||y的结果是(C )。
A、3B、0C、1D、26.针对下列程序段回答问题(B )。
for(t=1;t〈=100;t++){scanf(”%d”,&x);if(x<0)continue;printf(”%3d”,t);}A、x>=0时什么也不输出B、最多允许输出100个非负整数C、printf函数永远也不执行D、当x<0时整个循环结束7.以下程序的执行结果是(B ).main(){int num = 0;while(num 〈= 2 ){ num++;printf(”%d,”,num ); }}A、0,1,2B、1,2,3,C、1,2,3,4,D、1,2,8.选择正确的输入语句(d )。
:(其中:char string[20];)使得string的内容为”I am student"。
A、scanf("%s”, string);B、scanf("%c”, &string);C、scanf(”%s”, &string);D、gets(string);9.对以下说明语句int a[10]={6,7,8,9,10};的正确理解是(B).A、将5个初值依次赋给a[6]至a[10]B、将5个初值依次赋给a[0]至a[4]C、因为数组长度与初值的个数不相同,所以此语句不正确D、将5个初值依次赋给a[1]至a[5]10.以下标识符中可以作为用户函数名的是( d )。
大连理工大学2012c语言期末模拟试题及答案一、1/字符串"\\\'efg\'\\"的长度是:( ).A、3B、11C、7D、52、设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为()。
A、doubleB、不确定C、intD、float3、下列语句的结果是()。
main(){ int j;j=3;printf("%d,",++j);printf("%d",j++);}A、3,3B、4,4C、3,4D、4,34、逻辑表达式!(2-1)&&x||0的值是( )A、1B、0C、3D、25、int a=1,b=2,c=3; if(a>b)a=b; if(a>c)a=c; 则a的值为()。
A、3B、2C、1D、不一定6、执行语句 for(i=1;i++<4;); 后变量 i 的值是()。
A、3B、5C、4D、不定7、以下正确的描述是( ).A、只能用continue语句来终止本次循环B、switch语句中不能出现continue语句C、在循环中break语句不能独立出现D、goto语句只能用于退出多层循环8、下面合法的语句定义是( ).A、char a[ ]={'0','1','2','3','4','5'};B、int a[ ]="string";C、int a[5]={0,1,2,3,4,5};D、char a="string";9、char a[10];不能将字符串"abc"存储在数组中的是()。
A、int i;for(i=0;i<3;i++)a[i]=i+97;a[i]=0;B、a="abc";C、strcpy(a,"abc");D、a[0]=0;strcat(a,"abc");10、在C语言中,一维数组的定义方式为:类型说明符数组名()。
1.以下不符合C语言语法的赋值语句是()。
A、j=j=5;B、k=2*4,k*4;C、j++;D、y=float(j);2.以下运算符中,优先级最高的运算符是()。
A、?:B、,C、&&D、++3.根据下面的程序,正确的输出形式是( );main(){int i=5,j=10;printf ("i=%d,", i);printf ("j=%d ", j);}4. int a=1,b=2,c=3; if(a>c)b=a;a=c;c=b;则c的值为()。
A、1B、3C、2D、不一定5.在以下一组运算符中,优先级最高的运算符是:( )A、=B、&&C、<=D、%6.执行语句 for(i=1;i++<4;); 后变量 i 的值是()。
A、3B、5C、4D、不定7.若i为整型变量,则以下循环执行次数是()。
for(i=2;i==0;) printf("%d",i--);A、0次B、2次C、无限次D、1次8.下列数组说明中,正确的是()。
A、char str1[],str2[];str2={"China"}; strcpy(str1,str2);B、char str[]="China";C、char str[]; str="China";D、char str1[5],str2[]={"China"}; str1=str2;9.设有数组定义: char array [ ]="China"; 则数组 array所占的空间为()。
A、7个字节B、6个字节C、5个字节D、4个字节10.以下能对二维数组a进行正确初始化的语句是()。
A、int a[][3]={{1,2,3},{4,5,6}};B、int a[2][4]={{1,2,3},{4,5},{6}};C、int a[2][]={{1,0,1},{5,2,3}};D、int a[][3]={{1,0,1}{},{1,1}};11.用户定义的函数不可以调用的函数是()。
【第一套】一、单项选择1.下列数据中,为字符串常量的是(d)。
A、'A'B、How do you do.C、$abcD、"house"2.以下所列的C语言常量中,错误的是(b )。
A、0xFFB、1.2e0.5C、2LD、'\72'3.以下程序的输出结果是(d)。
main(){float x=3.6;int i;i=(int)x;printf("x=%f,i=%d\n",x,i);}A、x=3.,i=4B、x=3 i=3.C、x=3,i=3D、x=3.,i=34.若k是整型,则以下程序段的执行结果是:(b ) k=-3;if(k<=0) printf("####")else printf("&&&&");A、####B、有语法错误,无结果C、&&&&D、####&&&&5.若x=2,y=3则x||y的结果是( c)。
A、3B、0C、1D、26.针对下列程序段回答问题(b ).for(t=1;t<=100;t++){scanf("%d",&x);if(x<0) continue;printf("%3d",t);}A、x>=0时什么也不输出B、最多允许输出100个非负整数C、printf函数永远也不执行D、当x<0时整个循环结束7.以下程序的执行结果是(b )。
main(){ int num = 0;while( num <= 2 ) { num++; printf( "%d,",num ); } }A、0,1,2B、1,2,3,C、1,2,3,4,D、1,2,8.选择正确的输入语句(d )。
1. C语言中运算对象必须是整型的运算符是()。
A、=B、%=C、〈=D、/2.下列字符序列中,不可用作C语言标识符的是()。
A、b70B、a_1C、#abD、symbol3.下列程序的输出结果是()。
main(){int a=011;printf("%d\n",++a);}A、11B、9C、12D、104.逻辑表达式5>3&&2||8<4-!0的值为:( )A、3B、2C、1D、05.下列选项中,合法的C语言关键字是()。
A、integerB、defaultC、VARD、cher6.下列程序的输出为()。
main(){ int y=10;while(y--);printf("y=%d\n",y);}A、y=-1B、y=0C、y=1D、while构成无限循环7.以下表述中正确的是( ).A、在do-while循环中,while表达式的值不能为"假"B、do-while循环中,while语句不能省略C、do-while循环中,while(表达式)后面不能加分号D、除了for循环,其他循环中都不能使用复合语句8.以下不能正确定义二维数组的选项是()。
A、int a[2][]={{1,2},{3,4}};B、int a[2][2]={{1},2,3};C、int a[2][2]={{1},{2}};D、int a[][2]={1,2,3,4};9. int a[10]; 给数组a的所有元素分别赋值为1、2、3、……的语句是()。
A、for(i=1;i<11;i++)a[i]=i;B、for(i=1;i<11;i++)a[0]=1;C、for(i=1;i<11;i++)a[i+1]=i;D、for(i=1;i<11;i++)a[i-1]=i;10.若有说明: int a[3][4]={0};则下面正确的叙述是()。
2022年大连理工大学公共课《C语言》科目期末试卷B(有答案)一、填空题1、设有一输入函数scanf("%d”,k);它不能使float类型变量k得到正确数值的原因是_______未指明变量k的地址和_______格式控制符与变量类型不匹配。
2、结构化程序由________、________ 、________ 3种基本结构组成。
3、在C语言中,输入操作是由库函数________完成的,输出操作是由库函数________完成的。
4、若有定义语句:int x=3,y=2;float a=2.5,b=3.5;则表达式(x+y)%2+(int)a/(int)b的值为_______。
5、若有定义语句:int b=7;float a=2.5,c=4.7;则表达式a+(int)(b/3*(int)(a+c)/2)%4的值为_______6、设有char a,b;若要通过a&b运算屏蔽掉a中的其他位,只保留第2和第8位(右起为第1位),则b的二进制数是_______。
7、函数swap(int x,inty)可完成对x和y值的交换。
在运行调用函数中的如下语句后,a[0]和a[1]的值分别为_______,原因是_______。
a[o]=1;a[1]=2;swap(a[o],a[1]);8、下面程序段将输出computer。
请填空。
char c[]="It is a computer";for(i=0;_______;i++){_______;printf("%c",c[j]);}9、下面程序段的运行结果是_______。
int i=5;char c[6]="abcd";do{c[i]=c[i-1];}while(--i>0);puts(c);10、以下程序段通过移动指针变量m,给如图9-7所示连续动态存储单元赋值。
请填空。
(假设程序段中的所有变量均已正确说明。
程序题程序设计/*------------------------------------------------【程序设计】--------------------------------------------------功能:编写函数fun(str,i,n),从字符串str中删除第i个字符开始的连续n个字符(注意:str[0]代表字符串的第一个字符)。
------------------------------------------------*/#include "stdio.h"#include "string.h"main(){char str[81];int i,n;void fun(char str[],int i,int n);void TestFunc();printf("请输入字符串str的值:\n");scanf("%s",str);printf("你输入的字符串str是:%s\n",str);printf("请输入删除位置i和待删字符个数n的值:\n");scanf("%d%d",&i,&n);while (i+n-1>strlen(str)){printf("删除位置i和待删字符个数n的值错!请重新输入i和n的值\n");scanf("%d%d",&i,&n);}fun(str,i,n);printf("删除后的字符串str是:%s\n",str);TestFunc();}void fun(char str[],int i,int n){/*********Begin**********/while(str[i+n-1]){str[i-1]=str[i+n-1];i++;}str[i-1]='\0';/* 或int j=i-1,k=i+n-1;while((str[j++]=str[k++])!='\0');*//********** End **********/}void TestFunc(){FILE *IN,*OUT;char i[200];/*char o[200];*/IN=fopen("in.dat","r");if(IN==NULL){printf("Read File Error");}OUT=fopen("out.dat","w");if(OUT==NULL){printf("Write File Error");}fscanf(IN,"%s",i);fun(i,2,8);fprintf(OUT,"%s\n",i);fclose(IN);fclose(OUT);}/*------------------------------------------------【程序设计】--------------------------------------------------功能:请编一个函数void fun(int tt[M][N],int pp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中。
第一部分注意事项1. 请对照《课件》和《教材》进行练习。
2. 熟悉键盘,注意竖杠“|”和反斜杠“\”的位置,请在西文状态下输入。
3. 单选题、判断题和填空题要会验证。
当输入汉字时,可能输入提示框是灰色的,再按一次中英文切换键即可。
4. 程序填空题不能删除注释/*****FILL*****/,但必须删除标记符号_____,否则编译通不过。
如,for(i=10; ____; i++)。
5. 程序改错题不能删除注释/*****ERROR*****/,仅在其下一行进行修改。
6. 程序填空题和程序改错题存盘即可。
但最好编译运行一下,编译时会自动存盘。
编译帮助检查语法错误,运行帮助检查逻辑错误。
7. 程序设计题不能删除注释/****BEGIN*****/和/****END*****/,只能在两个标记符之间编写程序。
必须保证编译、链接、运行都正确。
8. 以上程序题中不能更改程序结构和其它位置的程序代码,可以忽略其它程序位置的警告。
9. 如果VC发生死机(见图,可用按钮都变成灰色),请结束VC进程,再继续答题或重答。
结束VC进程的方法:先进入“任务管理器”;再选下面一种方法操作:方法1:选择“应用程序”标签,选中“VC任务”,按“结束任务”。
方法2:选择“进程”标签,选中“MSDEV.EXE”,按“结束进程”。
10. 提交试卷并看到成绩后再离开。
11.出现问题立即请示监考老师。
12.请记住几个常用的函数。
数学函数:sin(),cos(),tan(),log(),exp(),pow(),sqrt(),abs(),fabs()字符串函数:strcat(),strcpy(),strcmp(),strlen(),strlwr(),strupr()输入输出函数:printf(),scanf(),putchar(),getchar(),puts(),gets(),fopen(),fclose(),fprintf(),fscanf(),feof()其它实用函数:rand(),exit()第二部分概念题第1章概述1. C程序是的基本组成单位是_______. 函数2. C语言的程序结构分为______、选择结构和循环结构。
大连理工大学C语言期中测试模拟题2一、单项选择1、下述正确的C语言常量是:( C).A、E2B、5.0EC、3e-3D、1.5E2.52、若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是(D)。
A、0.000000B、2.750000C、3.500000D、2.5000003、根据下面的程序,使i=123,c1='A',c2='B'哪一种是正确的键盘输入方法(C ).(规定用[CR]表示回车,U表示空格)main(){int i;char c1,c2;scanf("%d%c%c", &i,&c1,&c2);}A、123AUB[CR]B、123UAUB[CR]C、123AB[CR]D、123[CR]AB[CR]4.下列程序段的输出结果为(B)。
int a=7,b=9,t; t=a*=a>b?a:b; printf("%d",t);A、49B、63C、7D、95. int a=1,b=2,c=3; if(a>c)b=a;a=c;c=b;则c的值为(C)。
A、1B、3C、2D、不一定6. t为int类型,进人下面的循环之前,t的值为0while( t=1 ){ ……}则以下叙述中正确的是(C )。
A、循环控制表达式的值为0B、循环控制表达式不合法C、循环控制表达式的值为1D、以上说法都不对7.针对for循环语句,for(表达式1;表达式2;表达式3),下列说法正确的是( B).A、break语句可以一次性跳出多层嵌套循环B、break语句只能跳出最内层循环C、continue语句可以一次性跳出多层嵌套循环D、continue语句可以跳出最内层循环8.以下不正确的定义语句是(C)。
A、double x[5]={2.0,4.0,6.0,8.0,10.0};B、char c1[]={'1','2','3','4','5'};C、int y[5]={0,1,3,5,7,9};D、char c2[]={'\x10','\xa','\x8'};9.以下正确的说法是( A).A、函数的类型决定返回值的类型B、定义函数时,形参的类型说明可以放在函数体内C、return后面不能为表达式D、如果形参与实参的类型不一致,以实参类型为准10. C语言规定,函数返回值的类型是由(A)。
【第一套】一、单项选择1.下列数据中,为字符串常量的是()。
A、'A'B、How do you do.C、$abcD、"house"2.以下所列的C语言常量中,错误的是( )。
A、0xFFB、1.2e0.5C、2LD、'\72' 3.以下程序的输出结果是()。
main(){float x=3.6;int i;i=(int)x;printf("x=%f,i=%d\n",x,i);}A、x=3.,i=4B、x=3 i=3.C、x=3,i=3D、x=3.,i=34.若k是整型,则以下程序段的执行结果是:( )k=-3;if(k<=0) printf("####")else printf("&&&&");A、####B、有语法错误,无结果C、&&&&D、####&&&&5.若x=2,y=3则x||y的结果是( )。
A、3B、0C、1D、26.针对下列程序段回答问题( ).for(t=1;t<=100;t++){scanf("%d",&x);if(x<0) continue;printf("%3d",t);}A、x>=0时什么也不输出B、最多允许输出100个非负整数C、printf函数永远也不执行D、当x<0时整个循环结束7.以下程序的执行结果是( )。
main(){ int num = 0;while( num <= 2 ) { num++;printf( "%d,",num ); } }A、0,1,2B、1,2,3,C、1,2,3,4,D、1,2,8.选择正确的输入语句( )。
:(其中:char string[20];)使得string 的内容为"I am student".A、scanf("%s", string);B、scanf("%c", &string);C、scanf("%s", &string);D、gets(string);9.对以下说明语句 inta[10]={6,7,8,9,10}; 的正确理解是()。
程序题程序设计/*------------------------------------------------ 【程序设计】--------------------------------------------------功能:编写函数fun(str,i,n),从字符串str中删除第i个字符开始的连续n个字符(注意:str[0]代表字符串的第一个字符)。
------------------------------------------------*/#include "stdio.h"#include "string.h"main(){char str[81];int i,n;void fun(char str[],int i,int n);void TestFunc();printf("请输入字符串str的值:\n");scanf("%s",str);printf("你输入的字符串str是:%s\n",str);printf("请输入删除位置i和待删字符个数n的值:\n");scanf("%d%d",&i,&n);while (i+n-1>strlen(str)){printf("删除位置i和待删字符个数n的值错!请重新输入i和n的值\n");scanf("%d%d",&i,&n);}fun(str,i,n);printf("删除后的字符串str是:%s\n",str);TestFunc();}void fun(char str[],int i,int n){/*********Begin**********/while(str[i+n-1]){str[i-1]=str[i+n-1];i++;}str[i-1]='\0';/* 或int j=i-1,k=i+n-1;while((str[j++]=str[k++])!='\0');*//********** End **********/ }void TestFunc(){FILE *IN,*OUT;char i[200];/*char o[200];*/IN=fopen("in.dat","r");if(IN==NULL){printf("Read File Error"); }OUT=fopen("out.dat","w"); if(OUT==NULL){printf("Write File Error"); }fscanf(IN,"%s",i);fun(i,2,8);fprintf(OUT,"%s\n",i);fclose(IN);fclose(OUT);}/*------------------------------------------------【程序设计】--------------------------------------------------功能:请编一个函数void fun(int tt[M][N],int pp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中。
1. C语言中运算对象必须是整型的运算符是()。
A、=
B、%=
C、〈=
D、/
2.下列字符序列中,不可用作C语言标识符的是()。
A、b70
B、a_1
C、#ab
D、symbol
3.下列程序的输出结果是()。
main()
{int a=011;
printf("%d\n",++a);
}
A、11
B、9
C、12
D、10
4.逻辑表达式5>3&&2||8<4-!0的值为:( )
A、3
B、2
C、1
D、0
5.下列选项中,合法的C语言关键字是()。
A、integer
B、default
C、VAR
D、cher
6.下列程序的输出为()。
main()
{ int y=10;
while(y--);
printf("y=%d\n",y);
}
A、y=-1
B、y=0
C、y=1
D、while构成无限循环
7.以下表述中正确的是( ).
A、在do-while循环中,while表达式的值不能为"假"
B、do-while循环中,while语句不能省略
C、do-while循环中,while(表达式)后面不能加分号
D、除了for循环,其他循环中都不能使用复合语句
8.以下不能正确定义二维数组的选项是()。
A、int a[2][]={{1,2},{3,4}};
B、int a[2][2]={{1},2,3};
C、int a[2][2]={{1},{2}};
D、int a[][2]={1,2,3,4};
9. int a[10]; 给数组a的所有元素分别赋值为1、2、3、……的语句是()。
A、for(i=1;i<11;i++)a[i]=i;
B、for(i=1;i<11;i++)a[0]=1;
C、for(i=1;i<11;i++)a[i+1]=i;
D、for(i=1;i<11;i++)a[i-1]=i;
10.若有说明: int a[3][4]={0};则下面正确的叙述是()。
A、数组a中每个元素均可得到初值0
B、只有元素a[0][0]可得到初值0
C、数组a中各元素都可得到初值,但其值不一定为0
D、此说明语句不正确
11.以下叙述错误的是().
A、函数调用可以出现在一个表达式中
B、函数调用可以作为一个函数的形参
C、函数调用可以作为一个函数的实参
D、函数允许递归调用
12.以下叙述不正确的是().
A、全局变量可以由系统自动初始化
B、在程序运行期间,全局变量所占存储单元的值永久保留
C、当局部变量与全局变量重名时,全局变量起作用
D、全局变量存放在静态存储区
13.函数的形式参数系统默认存储类型说明是()。
A、static
B、extern
C、register
D、auto
14.设有宏定义#define MAX(x,y) (x)>(y)?(x):(y),则F=4*MAX(2,3)的值为( ).
A、3
B、2
C、12
D、8
15.以下程序的输出结果是 ( ).
#include "stdio.h"
f(char *s)
{
char *p=s;
while(*p!='\0') p++;
return(p-s);
}
main( )
{
printf("%d\n",f("ABCDEF"));
}
A、0
B、6
C、3
D、8
16.对于下述定义,不正确的叙述是( ).
union data
{int i;
char c;
float f;
}a,b;
A、变量a的地址和它的各成员地址都是相同的
B、可以在定义类型的同时定义变量a,并对a的任意成员初始化
C、变量a所占内存的长度等于成员f的长度
D、如果有定义语句 union data a={6};则对变量a的初始化是正确的
17.定义my_file为文件型指针变量,使用fopen打开一个能读能写的新的文本文件, 正确的调用形式为( ).
A、my_file=fopen("my.dat", "wb+");
B、my_file=fopen("my.dat", "ab+");
C、my_file=fopen("my.dat", "r+");
D、my_file=fopen("my.dat", "w+");
1.在C程序中,APH和aph是两个不同的变量
2. 格式字符%o用来以八进制形式输出整数.
3.已知a=1,b=2,c=3,d=4,则条件表达式a>b?a:(c>d?c:d)的值为
4. 在逻辑运算符中的运算级别由高向低依次为 &&->||->!
5. for语句的循环体至少执行一次.
6. for循环语句不能用于循环次数未知的情况下.
7. 字符串"Da lian"在内存中的存储长度是7.
8. 给数组赋初值时,初值的个数可以小于所定义的元素的个数.
9. 引用数组元素时,下标可以是整型表达式或整型常量.
10. 函数strlen("ASDFG\n")的值是7。
11. 在C语言中,函数名代表函数的入口地址.
12. 在C程序中 , 函数既可以嵌套定义 , 也可以嵌套调用
13. 宏命令#define无论在文件中何处定义,其有效范围为整个源文件。
14. 指向某一变量的指针,就是该变量的内存地址.
15. 在定义结构体变量时不允许对它赋初值.
16. C语言把文件看作是一个字符(字节)序列。
1.已知 float i=5.6;int a;写出语句 a=(int)i; 执行后变量 i 的值是_____.
2.在C语言中,long类型数据占_____个字节, short类型数据占_____个字节.
3.c语言表达式5>2>7>8的值是_____.
4.设a=3,b=4,c=4,则表达式a+b>c&&b==c&&a||b+c&&b==c的值为_____.
5.若有数组定义:int a[10];则该数组可用的最小下标值是_____.
6.若在程序中用到"strlen()"函数时,应在程序开头写上包含命令#include "_____".
7.设有以下共用体类型说明和变量定义,在TC编译环境下,变量a在内存所占字节数是
_____。
union stud { char num[6]; float s[4]; double ave; } a,*p;
8. fscanf(fp,"%d",&here)用来把fp所指向的文件数据读入到here变量中,执行一次fscanf(fp,"%3d",&here);
读入一个_____型数据,该数据的宽度为_____。
答案 BCDCB ABADA BCDBB BD
对对对错错错错对对错对错错对错对
5.6 4 0 1 0 string.h 16 int(整) 3。