2010年湖南大学829考研试题
一、单项选择题(12*3=36)
-
C语言源程序文件经过C编译程序编译链接后生成一个后缀为____的文件。( C ) A. “ .c ” B. " .obj " C. " .exe " D. " .bis "C -
以下选项中不正确的整型常量是____。( C ) A. 12L B. -10 C. 1,900 D. 123U -
表达式____的值为0.( C ) A. 3%5 B. 3/5.0 C. 3/5 D. 3<5 -
表达式!(x>0||y>0) 等价于_____. ( D ) A. !x>0||!y>0 B. !(x>0)||!(y>0) C.!x>0&&!y>0 D. !(x>0)&&!(y>0) -
表达式______不符合C语言语法. ( D ) A. 4&&3 B.+a C. a=b=5 D. int (3.14) -
履行语句scanf( "%d%d%d" ,&k1,&k2,&k3); 时 ,____是 正确的输入,若变量已经正确定义。( B ) A、203040 B、20 30 40 C、20,30 40 D、20,30,40 -
设变量定义为int s[ ]= "hello\nworld\n" ,数组s中有____个元素。( B ) A、12 B、13 C、14 D、15 -
设变显定义为int a[2]= (1,3},* p= &a[0]+ 1 ;则*p的值为___. ( B ) A、2 B、3 C、4 D、&a[0]+1 -
在C语言程序中,在函数内部定义的变量称为 ( D ) A、全局变量 B、全程变量 C、外部变量 D、内部变量 -
表达式_____是正确的,对于以下的变量定义。( A )
struct node{
char s[10];
int k;
}p[4];
A、p->k=2; B、p[0].s=" abc" ; C、p[0]->k=2; D、p->s=’a' ;
- 下列程序段的输出结果为 ( B )
int *p,*q,k =1,j= 10;
p= &j;
q= &k;
p=q;
(*p)++;
printf( "%d”,*q);
A、1 B、2 C、10 D、11
- 以下的for循环,其循环次数为__. ( C )
for(x=0,y=O;(y!=123)&&(x<4);x++);
A、是无限循环 B、循环次数不定 C、执行4次 D、执行3次
二、填空题:(8*3=24分)
-
C语言中基本的数据类型有:_____ 、 _____ 、______。 -
C语言中普通整型变量的类型说明符为____,在内存中占____字节 ,有符号普通整型的数据范围是______ -
整数-35 在计算机内的补码是_____ -
执行下列语句int a= 8; a+=a-=a*a; 后,a的值是____。 -
有如下语句: char A[ ] = { "I am a student" }; 该字符串的长度是_____, A[3]=____。 -
符号"a” 和'a' 的区别是 -
所谓的”指针”就是_____ " & ” 运算符号的作用是___” * ” 运算符号的作用是__ -
有如下输入语句:scanf( a=%d,b=%d,c=%d",&a,&b,&c); 为使变量a,b,c的值分别为1,3,2,从键盘输入数据的正确形式应是_________
解答:
1.整型、实型、字符型 2. int 、4、-2^31 ~ 2^31 -1 3.11011101 、补码=反码+1,符号位不变 4. -112 5. 14 、m (注意strlen和sizeof区别) 6."a" 是字符串,’a‘ 是字符 7. 地址,**“&”**取地址或按位与,乘积或指针 8.a=1,b=3,c=2
三、程序填空题( 3*10=30分)
- 从键盘输入10个数,求其平均值。
int main()
{
int i;
float f,sum;
for( i=1,sum=0.0;i<11;i++)
{
___________________;
___________________;
}
printf(average=%f\n",sum/10) ;
_____________________;
}
- 以下程序是建立一个myfile的文件,并把从键盘输入的字符存入该文件, 当键盘.上输入结束时,关闭该文件。
#include<stdio.h>
main()
{
FILE *fp;
char c;
fp=___________;
do {
e = getchar( );
fputs(c,fp);
}while(c!=EOF );
_______________;
}
- 以下程序的功能是:从键盘上输入若千个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。请填空。
main( )
{
float x, amax, amin;
scanf("%f",&x) ;
amax=х; amin=х;
while ( _______ )
{
if( x>amax )
amax = x;
if(________)
amin = x;
}
printf("\namax=%f\namin=%f\n" , amax , amin);
}
四、程序设计题( 5*12=60分)
- 提示輸入兩个整数a和b,若a^2 +b^2大于100 ,則輸出a^2 + b^2百位以上的数字,否则输出两位数字之和。
【仅供参考】
#include<stdio.h>
int main()
{
int a, b;
scanf("%d%d", &a, &b);
a = a * a;
b = b * b;
int sum = a + b;
if (sum > 100)
printf("%d\n", sum / 100);
else
printf("%d\n", sum);
return 0;
}
- 编写一程序,将字符串"computer" 赋值给一个字符数组,然后从第一 个字母开始间隔的输出该串,请用指针完成。
【仅供参考】
#include<stdio.h>
#include<string.h>
int main()
{
char a[] = "computer";
char* p;
int i;
p = a;
for (i = 0; i < strlen(a); i++)
{
printf("%c", *(p + i));
}
printf("\n");
return 0;
}
- 编程实现对键盘输入的英文句子进行加密。用加密方法为,当内容为英文字母时,其在26字母中的其后第三个字母代替该字母, 若为其它字符时不变。
【仅供参考】
#include<stdio.h>
int main()
{
char c;
printf("请输入一个字符串:\n");
while ((c = getchar()) != '\n')
{
if ((c >= 'A' && c <= 'Z-3') || (c >= 'a' && c <= 'z-3'))
{
c = c + 3;
}
else if ((c >= 'Z-3' && c <= 'Z') || (c >= 'z-3' && c <= 'z'))
{
c = (c + 3) - 26;
}
printf("%c", c);
}
return 0;
}
- 提示输入一个字符串string,然后在string里面每个字母间加一个空格,请用指针完成。
【仅供参考】
#include<stdio.h>
#include<string.h>
#define MAX 100
void Insert(char str[])
{
char tmp[MAX];
int i = 0;
int j = 0;
strcpy(tmp, str);
while (tmp[j] != '\0')
{
str[i++] = tmp[j];
str[i++] = ' ';
j++;
}
str[i] = '\0';
}
int main()
{
char str[MAX];
printf("请输入字符串:\n");
scanf("%s", str);
Insert(str);
printf("%s", str);
return 0;
}
- 随机产生20个[10,50]的正整数存放在数组中,并求数组中的所有元素最大值,最小值,平均值以及各元素之和。
【仅供参考】
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
srand((unsigned)time(0));
int a[20];
int i = 0;
double sum = 0;
double avg = 0;
int Max = 10;
int Min = 50;
while (i < 20)
{
a[i] = 10 + rand() % 41;
if (a[i] > Max)
Max = a[i];
if (a[i] < Min)
Min = a[i];
sum += a[i];
i++;
}
avg = sum / 20.0;
printf("最大值Max=%d\n最小值Min=%d\n平均值avg=%.2f\n各元素之和sum=%.2f\n", Max, Min, avg, sum);
return 0;
}
|