C语言模拟题

更新时间:2023-10-10 17:58:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

十一

1、判断题(10分)

(1)一个C语言源程序文件中,有且只能有一个主函数。

(2)C程序中的一个变量可以被定义为两个或多个不同的类型。

(3)x*=y+8 等价于 x=x*(y+8)。

(4)若有int i=10, j=0;则执行完语句:if(j=0) i++; else i--; i的值为11。

(5)while和do?while循环不论什么条件下它们的结果都是相同的。

(6)如果想使一个数组中全部元素的值为0,可以写成 int a[10]={0*10};

(7)只有在函数被调用时,其形式参数才临时性地占有存储空间。

(8)语句char *p=“Visual C++”;的含义是将字符串赋给字符型指针变量p。

(9)函数即可以嵌套定义,又可以嵌套调用。

(10)C语言中的标识符以字母或下划线开头,可跟任何字符。

2、选择题(20分)

(1)8、以下叙述不正确的是_____________。

A:一个C 源程序可由一个或多个函数组成

B:一个C 源程序必须包含一个main 函数

C:C 程序的基本组成单位是函数

D:C 程序中,注释说明只能位于一条语句的后面

(2)以下选项中,非法的字符常量是______。

A:'\\t' B:'\\17' C:\ D:'\\xaa'

(3)有以下程序

#include

int main()

{

int x=102,y=012;

printf(\

return 0;

}

执行后输出结果是______。

A:10,01 B:02,12 C:102,10 D:02,10

(4)有以下程序片段,执行后输出的结果是______。

int a=5,b=4,c=3,d=2;

if(a>b>c)

printf(“%d\\n”,d);

else if((c-1>=d)==1)

printf(“%d\\n”,d+1);

else

printf(“%d\\n”,d+2);

A:2 B:3 C:4 D:编译时有错,无结果

(5)若x是int型变量,且有下面的程序片段:

for(x=3;x<6;x++)

printf((x%2) ? (\

上面程序片段的输出结果是______。

① ② ③ ④

**3 ##3 ##3 **3##4

##4 **4 **4##5 **5

**5 ##5

A:① B:② C:③ D:④

6)判断字符串a和b是否相等,应当使用________。

A:if(a==b) B:if(a=b) C:if(strcpy(a,b)) if(strcmp(a,b))

7)以下正确的说法是________。在C语言中,

A:实参和与其对应的形参各占用独立的存储单元

B:实参和与其对应的形参共占用一个存储单元

C:只有当实参和与其对应的形参同名时才共占用存储单元D:形参是虚拟的,不占用存储单元

8)下面程序段的运行结果是_________。

char str[]=\

printf(\

:( D(

(A:67 B:0 C:字符'C'的地址 D:字符'C'

(9)若有条件表达式(exp)?a++:b--,则以下表达式中能完全等价于表达式(exp)的是___。

A:(exp==0) B:(exp!=0) C:(exp==1) D:(exp=1)

(10)下面程序段的运行结果是__________。

a=1; b=2; c=2;

while(a

printf(“%d,%d,%d”,a,b,c);

A:1,2,0 B:2,1,0 C:1,2,1 D:2,1,1

3、填空题(10分)

(1)下面程序的运行结果是___________。

for(i=1;i<=5;i++)

switch(i%2)

{

case 0: i++; printf(“#”);break;

描述:求n个数的平均数。请你定义并调用函数,实现求平均值功能。函数的首部为:double avger( double x[10], int m)。

输入:输入数据有2行,第一行为n,第二行是n个数。n 在[1-10]之间。

输出:输出n个数中的平均数,结果保留小数点2位。

样例输入

5

-1 2.1 3 4 -5.8

样例输出

0.46

十二

1、判断题(10分)

(1)在C源程序中,/*与*/之间的注释信息也被编译,但对程序运行运果不发生影响。

(2)字符常量是用单撇号括来的一个字符,这个字符可以是任意的字母或数字。

(3)x*=y+8 等价于x=x*(y+8)。

(4)continue语句用在循环体中,可使整个循环不结束。

(5)两个字符串中的字符个数相同时才能进行字符串大小的比较。

(6)一个函数中只允许有一条return语句。

(7)函数即可以嵌套定义,又可以嵌套调用。

(8)以数组名作函数参数时,实参数组与形参数组都不必定义长度,因此实参与形参的传递方式是地址传递,与数组长度无关。

(9)C语言中“%”运算符的运算对象必须是整型。

(10)语句char *p=“Visual C++”;的含义是将字符串赋给字符型指针变量p。

2、选择题(20分)

(1)执行下列程序段时输出的结果为____________。

int x=10;

x+=3+x%3;

printf(\

A:11 B:12 C:14 D:15

(2)若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是______。

A:-3 B:9 C:-12 D:6

(3)下面程序片段的输出是________。

int x=100,a=10,b=20,ok1=5,ok2=0;

if(a

if(b!=15)

if(!ok1)

x=1;

else if(ok2)

x=10;

x=-1;

printf(“%d\\n”,x);

A:-1 B:1 C:10 D:100

(4)若有说明:int a[3][4];则对a数组元素的非法引用是____________。

A:a[0][2*1] B:a[1][3] C:a[4-2][0] D:a[0][4]

(5)有以下程序

int f(int n)

{if (n==1) return 1;

else return f(n-1)+1;

}

int main()

{

int i,j=0;

for(i=1;i<3;i++) j+=f(i);

printf(\

return 0;

}

程序运行后的输出结果是______。

A:4 B:3 C:2 D:1

(6)以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是_____。

int main()

{

int *p,*q,a,b;

p=&a;

scanf(\

........;

return 0;

}

A:*p表示的是指针变量p的地址

B:*p表示的是变量a的值,而不是变量a的地址

C:*p表示的是指针变量p的值

D:*p只能用来说明p是一个指针变量

(7)能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是_________。

A:(x>=1)&&(x<=10)&&(x>=200)&&(x<=210)

B:(x>=1)||(x<=10)||(x>=200)||(x<=210)

C:(x>=1)&&(x<=10)||(x>=200)&&(x<=210)

D:(x>=1)||(x<=10)&&(x>=200)||(x<=210)

(8)下面程序片段是从键盘输入学号,然后输出学号中百位数字是3的学号,输入0时结束循环。

scanf(“%d”,&num);

do

{

if( ______ ) printf(“%d”,num);

scanf(“%d”,&num);

}while(num);

A:num0/10==3 B:num/100==3

C:num/10==3 D:num/10==3

(9)在C语言程序中,main函数的位置________________。

A:必须作为第一个函数 B:必须作为最后一个函数在任意空格处换行

C:必须放在它所调用的函数之后 D:可以放在任意位置

(10)有以下程序段

int k=0;

while(k=1)k++;

while循环执行的次数是______。

A:无限次 B:有语法错,不能执行 行 D:执行1次

3、填空题(10分)

(1)设有程序段:

switch(grade)

{

case ‘A’: printf(“85-100;”);

case ‘B’: printf(“70-84;”);

case ‘C’: printf(“60-69;”);

case ‘D’: printf(“<60;”);

default: printf(“error!\\n”);

}

若grade的值为‘C’,则输出结果是________。

:一次也不执 C(2)以下程序的功能是用递归方法计算五位学生的年龄,请填空。递归公式如下:

#include

age(int n)

{

int c;

if(n==1) c=10;

else c=_________;

return(c);

}

int main()

{

int n=5;

printf(“age:%d\\n”,_______);

return 0;

}

(3)设数组a中的元素均为正整数,以下程序片段是求a中偶数的个数和偶数的平均值。

int a[10]={1,2,3,4,5,6,7,8,9,10};

for(k=s=i=0;i<10;i++)

{

if(a[i]%2!=0)

________;

s+= ________;

k++;

}

if(k!=0)

{

ave=s/k;

printf(“%d,%f\\n”,k,ave);

}

4、成绩评估(10分)

描述:我们知道,高中会考是按等级来的。编写一个程序,对输入的一个百分制的成绩t,将其转换成对应的等级。

90~100为A; 80~89为B; 70~79为C; 60~69为D; 0~59为E。

输入:输入数据有多组,每组占一行,由一个整数组成。

输出:对于每组输入数据,输出一行。如果输入数据不在0~100范围内,请输出一行:“Score is error!”。

样例输入

56

67

100

123

样例输出

E

D

{

case ‘A’: printf(“85-100;”);

case ‘B’: printf(“70-84;”);

case ‘C’: printf(“60-69;”);

case ‘D’: printf(“<60;”);

default: printf(“error!\\n”);

}

若grade的值为‘C’,则输出结果是________。

(2)下面程序的功能是从三个红球、五个白球、六个黑球中任意取出八个球,且其中必须有白球,输出所有可能的方案。请填空。

for(i=0;i<=3;i++)

for( ______; j<=5;j++)

for(k=0;k<=6;k++)

if( ________ )

printf(“= = =\\n”,i,j,k);

(3)以下程序实现:输入圆的半径r和运算标志m,按照运算标志进行指定计算。请在_____内填入正确内容。

标志 运算

a 面积

c 周长

b 二者均计算

#define pi 3.14159

#include

int main()

{

char m;

float r,c,a;

printf(“input mark a c or b&&r\\n”);

scanf(“%c %f”,&m,&r);

if(m==’a’) { a=pi*r*r; printf(“area is %f”,a); }

if(_______) { c=2*pi*r; printf(“circle is %f”,c); }

if(_______) { a=pi*r*r; c=2*pi*r; printf(“area&&circle are %f %f”,a,c); }

return 0;

}

4、促销的价格(10分)

描述:某百货公司为了促销,采用购物打折的办法。

(1) 在1000元或以上者,按九五折优惠;

(2) 在2000元或以上者,按九折优惠;

(3) 在3000元或以上者,按八五折优惠;

(4) 在5000元或以上者,按八折优惠。 编写程序,输入购物款数,计算并输出优惠价。

输入:第一行1个正整数t,表示有t组数据,以下t行,每行1个正整数a,即购物款数。

输出:共t行,每行一个数,即相应的优惠价格,要求保留一位小数。

样例输入

2

2000

1550

样例输出

1800.0

1472.5

5、矩阵中绝对值大元素及行号列号(10分)

题目描述:输入一个正整数n (1≤ n ≤6),再输入一个n 行n列的矩阵,找出该矩阵中绝对值最大的元素以及它的行下标和列下标。

输入:第一行一个整数n,第二行是n行行列的矩阵。

输出:数 行 列

样例输入

2

1 2

3 4

样例输出:4 2 2

6、植树节猜生日(10分) HDU公共题库

描述:今年的植树节(2012年3月12日),小明和他的叔叔还有小伙伴们一起去植树。休息的时候,小明的同学问他叔叔多大年纪,他叔叔说:“我说个题目,看你们谁先猜出来!”

“把我出生的年月日连起来拼成一个8位数(月、日不足两位前补0)正好可以被今天的年、月、日整除!”。他想了想,又补充到:“再给个提示,我是6月出生的。”。

根据这些信息,请你帮小明算一下,他叔叔的出生年月日。

输入:无

输出:叔叔的出生年月日。格式是年月日连成的8位数。例如,如果是1948年6月12日,就写:19480612

样例输入:无

样例输出:19550604

7、删除指定字符(10分)

描述:从键盘输入一个字符串给str和一个字符给c,删除str中的所有字符c并输出删除后的字符串str。

输入:第一行是一个字符串;第二行是一个字符。

A

Score is error!

5、美食节之最倒霉(10分)

描述:其实这次美食节最倒霉的算是zhouping了为什么这么说呢。

1. 突降暴雨,临时充做伞的是zhoupiung的衣服。

2. 这次去参加美食节,只有zhoupiung没买到叫化鸡。

3. 貌似zhoupiung赶到美食节的时候还没开始吃就下雨了。

????????

有时候人品差起来真是没办法啊,XZC突然想到倒霉度,现给定人数n和n个人的倒霉度,请你编程求出n个人中倒霉度最大的。

输入:输入数据有多组,每组包含两行,第一行表示共有n个人,第二行输入每个人的倒霉度,其中n在0,倒霉度 在0。输入直到文件结束。

输出:输出包含两个数据,分别是倒霉度最大的值和倒霉度最大的那个人的ID(ID为输入时人所在的位置)。

样例输入

10

5 2 4 3 10 6 8 9 7 1

样例输出

10 5

提示

输入

10

5 2 4 3 10 6 8 9 7 1

表示有10个人,他们的倒霉度分别为5 2 4 3 10 6 8 9 7 1,其中倒霉度最大的是第五个位置的那位仁兄,那么就应该输出倒霉度最大值10,和倒霉度最大的那个人的ID,此人的ID是5,因为他在第五个位置嘛。

6、字符串统计(10分) HDU公共题库

描述:对于给定的一个字符串,统计其中数字字符出现的次数。

输入:输入数据是一个字符串。

输出:对于输入数据,输出该串中数值的个数。

样例输入:asdfasdf123123asdfasdf

样例输出:6

7、数列求和(10分)

描述:求数列1 2 4 7 11 16 22??的前n个数之和。

输入:输入数据有多组,每组占一行。输入数据为一个整数n,0 < n < 1000。

输出:每组输出一行,每行为一个整数,即数列的前n个数之和。

样例输入

3

4

样例输出

7

14

8、阶乘之和(10分)

描述:给定n的值,求Sn=1!+2!+3!+4!+5!+?+n!之值。但Sn可能很大,因此只要求出Sn关于100007的余数。请你定义并调用函数实现阶乘求和功能。函数首部为:__int64 fact ( int m)。输入输出在主调函数中实现。

输入:输入数据有多组,每组占一行,每行一个正整数n(n<=1000)。

输出:每组输出一个整数,即Sn Mod 100007。

样例输入

1

2

3

样例输出

1

3

9

9、回文串判断 HDU公共题库

描述:“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。请写一个程序判断读入的字符串是否是“回文”。

输入:每组测试数据包含一个字符串。

输出:如果一个字符串是回文串,则输出\否则输出\。

样例输入

level

abcde

noon

haha

样例输出

yes

no

yes

no

十三

1、判断题(10分)

(1)#define 和printf 都不是C语句。

(2)if(!x)等价于if(x==0)

(3)如果想使一个数组中全部元素的值为1,可以写成 int a[10]={1*10};

(4)一个函数中只允许有一条return语句。

(5)指针就是地址,因此一个变量的指针就是该变量的地址。

(6)在进行逻辑运算时,非0整型值表示“真”。

(7)用gets函数可以接收一个含有空格的字符串。

printf(“#”);

}while(1<=x<=2);

A:将输出### B:将输出##* C:是死循环 D:含有不合法的控制表达式

(10)以下程序输出是_________。

int m[3][3]={{1},{2},{3}};

int n[3][3]={1,2,3};

printf(\

A:0 B:1 C:2 3、填空题(10分)

(1)请阅读以下程序片段:

scanf(“%d”,&t);

h=(t/100);

if(h==0)

h=12;

printf(“%d”,h);

:3

Dm=t0;

if(m<10)

printf(“0”);

printf(“%d”,m);

if(t<1200||t==2400)

printf(“AM”);

else

printf(“PM”);

若运行时输入:1605<回车>时,程序的运行结果是_________。

(2)下面程序以每行4个数据的形式输出a数组,请填空。

int a{20};

for(i=0;i<20;i++)

scanf(“%d”,&a[i]);

for(i=0;i<20;i++)

{

if( _______)

________;

printf(“%d ”,a[i]);

}

printf(“\\n”);

(3)若for循环用以下形式表示:for(表达式1;表达式2;表达式3)

则执行语句for(i=0;i<3;i++) printf(“*”);时,表达式1执行____次,表达式3执行____次。

4、体重指数 HDU公共题库

描述:编写一个体重测量仪,要求当输入多人的体重和身高后,能够计算出体重指数,并根据指数情况进行判断。体重指数 =体重(公斤) 除 身高(米)的平方 (kg/m2)

中国参考标准:偏 瘦:体重指数 < 18.5

正常体重 : 18.5<=体重指数 < 23.9 轻微肥胖 : 24<=体重指数 < 26.9

中度肥胖 : 27<=体重指数 < 29.9 重度肥胖 :体重指数 > = 30。

输入:测试数据有多组,每组两个值,体重和身高。以0 0结束。

输出:体重指数。小数点保留2位。

样例输入:

70 1.75

90 1.75

0 0

样例输出:

体重指数22.86,正常体重

体重指数29.39,中度肥胖 5、统计同成绩学生人数

描述:读入N名学生的成绩,将获得某一给定分数的学生人数输出。

输入:测试输入包含若干测试用例,每个测试用例的格式为

第1行:N

第2行:N名学生的成绩,相邻两数字用一个空格间隔。

第3行:给定分数

当读到N=0时输入结束。其中N不超过1000,成绩分数为(包含)0到100之间的一个整数。

输出:对每个测试用例,将获得给定分数的学生人数输出。

样例输入

3

80 60 90

60

2

85 66

0

5

60 75 90 55 75

75

0

样例输出

1

0

2

6、比酒量 HDU公共题库

描述:有一群海盗(不多于20人),在船上比拼酒量。过程如下:打开一瓶酒,所有在场的人平分喝下,有几个人倒下了。再打开一瓶酒平分,又有倒下的,再次重复...... 直到开了第4瓶酒,坐着的已经所剩无几,海盗船长也在其中。当第4瓶酒平分喝下后,大家都倒下了。

等船长醒来,发现海盗船搁浅了。他在航海日志中写到:“......昨天,我正好喝了一瓶.......奉劝大家,开船不喝酒,喝酒别开船......”。请你根据这些信息,推断开始有多少人,每一轮喝下来还剩多少人。

输入:无

输出:如果有多个可能的答案,请列出所有答案,每个答案占一行。格式是:人数,人数,...

样例输入:无

样例输出:20 5 4 2 0

提示

第一轮桌上有a人,每人喝酒1/a,船长也喝了1/a;

第二轮桌上有b人,每人喝酒1/b,船长也喝了1/b;

第三轮桌上有c人,每人喝酒1/c,船长也喝了1/c;

第四轮桌上有d人,每人喝酒1/d,船长也喝了1/d;

第五轮桌上人数为0。

船长正好喝了1瓶。即1/a + 1/b + 1/c + 1/d = 1 (a > b > c > d)

化简得:bcd + acd + abd + abc = abcd

7、数值统计(10分)

描述:统计给定的n个数中,负数、零和正数的个数。

输入:输入数据有多组,每组占一行,每行的第一个数是整数n(n<100),表示需要统计的数值的个数,然后是n个实数;如果n=0,则表示输入结束,该行不做处理。

输出:对于每组输入数据,输出一行a,b和c,分别表示给定的数据中负数、零和正数的个数。

样例输入:

6 0 1 2 3 -1 0

5 1 2 3 4 0.5

0

样例输出:

1 2 3

0 0 5

8、牧场围栏(10分)

题目描述:Z先生是一个大牧场主,他饲养的奶牛每年都源源不断地运往世界各地,我们的故事也由此产生了??

Z先生有一个矩形牧场,它的长和宽分别用 a 和 b (单位:米)表示,现在需要再牧场四周修建围栏,请编一个程序计算牧场的周长以确定用料的多少。定义并调用函数实现该功能。函数首部为int perimeter(int *x,int *y)。输入输出在主调函数中实现。

输入:输入档有多组数据,每组数据占一行,分别为 a 和 b ,以一个空格隔开。a 和 b 均为不超过1000的正整数。

输出:输出牧场的周长。

输入范例:4 3

输出范例:14

9、离别感言(10分)

描述:组建仅有三个月的tzcnb队即将解散,从此之后大家为更远的目标而奋斗。此时此刻大家都有许多感言。nbjwl,believe me,hqj 不喜欢将感言直接说出来。一向配合默契的他们都一致的使用了简单的方式将这些感言作了改变。比如:

nbuhe sio表示thank you

pyls aiix表示very good

你能知道他们都说了什么感言吗?请你定义并调用函数,实现该功能。函数首部为:void byebye(char x[])。

输入:第一行输入n ( n < = 10).表示有n个测试实例。每个实例都是一串字符,代表他们转换后的感言,里面只有小写字母、数字与空格。如果遇到空格、数字不需做任何转换。字符串的长度不超过100。

输出:对应每个输入,输出一个字符串,即队员们的真实感言。

样例输入

2

nbuhe sio

pyls aiix

样例输出

thank you

very good

十四

1、判断题(10分)

(1)C语言采用解释方式将源程序转换为二进制的目标代码。

(2)复合语句是由多条语句组成的,因此它不是一条语句。

(3)若 a=3,b=2,c=1 则关系表达式“(a>b)==c”的值为“真”。

(4)两个字符串中的字符个数相同时才能进行字符串大小的比较。

(5)C系统在用字符数组存储字符串常量时会自动加一个’\\0’作为结束符。

(6)以数组名作函数参数时,实参数组与形参数组都不必定义长度,因此实参与形参的结合方式是地址结合,与数组长度无关。

(7)指针变量不可以为函数的参数。

(8)对整型常量可进行自加或自减运算,而对变量或表达式不可以。

(9)for(表达式1;表达式2;表达式3){},其中表达式1只执行一次。

(10)程序进行编译时,不为形式参数分配存储空间。

2、选择题(20分)

(1)一个C 程序的执行是从_____________。

A:本程序的main 函数开始,到main 函数结束

B:本程序文件的第一个函数开始,到本程序文件的最后一个函数结束

C:本程序的main 函数开始,到本程序文件的最后一个函数结束

D:本程序文件的第一个函数开始,到本程序main 函数结束

(2)下面程序的输出是______。

#include

int main()

{

int x=10,y=3;

printf(\

return 0;

}

A:0 B:1 C:3 D:不确定的值

(3)阅读以下程序,当输入数据的形式为25,13,10 正确的输出结果为______。(注:表示回车)

#include

int main()

{

int x,y,z;

scanf(“%d%d%d”,&x,&y,&z);

printf(“x+y+z=%d\\n”,x+y+z);

return 0;

}

A:x+y+z=48 B:x+y+z=35 C:x+z=35 定值

4)有以下程序片段,执行后输出的结果是______。

int a=5,b=4,c=3,d=2;

if(a>b>c)

printf(“%d\\n”,d);

else if((c-1>=d)==1)

printf(“%d\\n”,d+1);

:不确 D(else

printf(“%d\\n”,d+2);

A:2 B:3 C:4 D:编译时有错,无结果

(5)下面程序的功能是将从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m、n中的较大者,请填空。

int m=0,n=0;

char c;

while((______)!=’\\n’)

{

if(c>’A’ && c<=’Z’) m++;

if(c>=’a’ && c<=’z’) n++;

}

printf(“%d\\n”, m< : n ?>

A:c=getchar() B:getchar() C:scanf(“%c”,c) D:scanf(“%d”,&c)

(6)有以下程序片段,执行后输出结果是______。

char s[]=\

printf(\

A:赋初值的字符串有错 B:6,7 C:5,6 D:6,6

7)以下正确的函数定义形式是________。A:double fun(int x,int y) C:double fun(int x,int y); 8)以下程序的运行结果是___________。void sub (int x,int y,int *z)

{

*z=y-x;

}

int main()

{

int a,b,c;

sub(10,5,&a);

:double fun(int x;int y)

D:double fun(int x,y);

B(

sub(7,a,&b);

sub(a,b,&c);

printf(\

return 0;

}

A:5, 2, 3 B:-5, -12, -7 C:-5, -12, -17 5, -2, -7

(9)变量的指针,其含义是指该变量的_______。

A:值 B:地址 C:名 D:一个标志

(10)下面程序段的运行结果是_________。

char str[]=\

printf(\

A:67 B:0 C:字符'C'的地址 D:字符'C'

3、填空题(10分)

(1)设有程序段:

switch(grade)

: D

本文来源:https://www.bwwdw.com/article/c4sf.html

Top