国家二级C语言程序设计机试(程序设计题)模拟试卷5
程序设计题
1.编写函数fun,其功能是:将两个两位数的正整数a、b合并成一个整数放在e中。合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在e数的百位和个位上。
例如,当a=45,b=12时,调用该函数后,c=5 142。
注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include
void fun(int a,int b,long*c)
{
main()
{
int a,b;long c;
void NONO();
printf(“Input a,b:”);
scanf(“%d%d”,&a,&b);
fun(a,b,&c);
prinff(“The result is:%d\n”,c);
NONO();
}
void NONO()
/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/
{
FILE* rf,*wf;
int i,a,b;long c;
rf=fopen(“in.dat”,“r”);
wf=fopen(“out.dat”,“w”);
for(i=0;i<10;i++)
{
fscanf(rf,“%d,%d”,&a,&b);
fun(a,b,&c);
fprinff(wf,“It=%d,b=%d,c=%ld\n”,a,b,c);
}
fclose(rf);
fclose(wf);
}
void fun(int a,int b,long*c)
{
*c=b%10+(a/10)*10+(h/10)*100+(a%10)*1000;
}
解析:本题考查:如何取出数值n的各个位;知道数值n的各个位,又如何表示该数值;指针型变量的使用。
本题中主要的问题是如何取出a和b的个位数和十位数,取出后如何表示成c中相应的位数。由于a和b都是只有两位的整数,所以分别对它们除10可得到它们的十位数,分别用10对它们求余可得到它们的个位数。得到后对应乘以1000、100、10、1就可得到c的千位数、百位数、十位数和个位数。
注意:使用c时要进行指针运算。知道两位数数值n,需要表示个位和十位,采用求余和除法操作,如n%10(取个位)、n/10(取十位)。
2.请编写函数fun,该函数的功能是:判断字符串是否为回文,若是,则函数返回1,主函数中输出“YES”,否则返回0,主函数中输出“NO”。回文是指顺读和倒读都一样的字符串。
例如,字符串LEVEL是回文,而字符串123312就不是回文。
注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include
#define N 80
int fun(char*str)
{
}
main()
{
char s[N];
FILE*out;
char*test[]={“1234321”,“123421”“123321”,“abcdCBA”};
int i;
prinff(“Enter a string:”);
gets(S);
prinff(“\n”);
puts(s);
if(fun(s))
prinff(“YES\n”);
else
printf(“NO\n”);
/****************/
out=fopen(“out.dat”,“w”);
for(i=0;i<4;i++)
if(fun(test[i]))
fprintf(out,“YES\n”);
else
fprinff(out,“NO\n”);
felose(out);
/****************/
}
int fun(char*str)
{
int i,n=0,fg=1;
char*p=str;
while(*p) /*将指针p置位到字符串末尾,并统计字符数*/
{n++;p++;}
for(i=0;i<n/2;i++) /*循环比较字符*/
if(str[i]==str[n一1一i]);/*相同,什么都不做*/
else
{fg=0;break;} /*不同,直接跳出循环*/
return fg;
}
解析:判断回文就是将第一个字符与最后一个字符比较,第二个字符与倒数第二个字符进行比较,以此类推,直到中间的字符。如果比较的结果都相同,那么这个字符串就是回文,否则不是。程序中循环语句用来遍历字符串,条件语句用来判断当前字符与对应位置的字符是否相同。
3.请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCⅡ码降序排列。例如,原来的字符串为“CEAedca”,排序后输出为“CedcEAa”。
注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include
#include
#include
void fun(char*s,int num)
{
}
main()
{
void NONO();
char S[10];
printf(“输入7个字符的字符串:”);
gets(s);
fun(s,7);
prinff(“\n%s”,s);
NONO();
}
void NONO()
/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/
{
char S[10];
FILE*rf,*wf;
int i=0;
rf=fopen(“in.dat”,“r”);
wf=fopen(“out.dat”,“w”);
while(i<10)
{
fgets(s,10,rf);
s[7]=0;
fun(s,7);
fprinff(wf,“%s\n”,S);
i++:
}
felose(rf);
felose(wf);
}
<本文档预览:3600字符,共5760字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载