上机填空题912文档格式.docx
《上机填空题912文档格式.docx》由会员分享,可在线阅读,更多相关《上机填空题912文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
A'
&
&
*s<
Z'
)
___1___;
a'
z'
___2___;
s++;
}
main()
chars[100];
intupper=0,lower=0;
printf("
\nPleaseastring:
"
);
gets(s);
fun(s,&
upper,&
lower);
\nupper=%dlower=%d\n"
___3___);
10
请补充main函数,该函数的功能是:
从键盘输入3个整数,然后找出最大的数并输出。
例如,输入:
12,45,43,输出为45。
仅在横线上填入所编写的若干表达式或语句,勿改动函数中的任何内容。
conio.h>
main()
inta,b,c,max;
clrscr();
printf("
\nInputthreenumbers:
\n"
);
scanf("
%d,%d,%d"
&
a,&
b,&
c);
Thethreenumbersare:
%d,%d,%d\n"
a,b,c);
if(a>
b)
___1___;
else
___2___;
if(max<
c)
___3___;
max=%d\n"
max);
11
给定程序中,函数fun的功能是:
把形参s所指字符串中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动(注:
字符串的长度大于等于2)。
例如,形参s所指的字符串为:
abcdefgh,执行结果为:
ahcbedgf。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。
voidfun(char*s)
inti,n,k;
charc;
n=0;
for(i=0;
s[i]!
='
\0'
;
i++)n++;
if(n%2==0)
k=n-___1___;
else
k=n-2;
c=___2___;
for(i=k-2;
i>
=1;
i=i-2)s[i+2]=s[i];
s[1]=___3___;
chars[80]="
abcdefgh"
\nTheoriginalstringis:
%s\n"
s);
fun(s);
\nTheresultis:
请补充fun函数,该函数的功能是将字符串tt中的大写字母都改为对应的小写字母,其他字符不变。
例如,若输入"
AreyoucomefromSichuan?
"
,则输出"
areyoucomefromsichuan?
string.h>
char*fun(chartt[])
inti;
tt[i];
i++)
if((tt[i]>
)&
(___1___))
return(___3___);
chartt[81];
\nPleaseenterastring:
gets(tt);
\nTheresultstringis:
\n%s"
fun(tt));
要实惠上淘宝
个人护理健康危机09夏季男装最后一次大补货试吃节风靡世界的李维斯牛仔裤购物新玩法搭配更便宜炒货节数码,还是国外原产的好在线配镜超低价巨便宜卡哇伊小包大集合时尚中国风
解答
分析:
题目要求统计字符串中大写字母和小写字母的个数,所以在main函数中使用gets函数接收从键盘上输入的字符串s,然后将s传入fun函数,在fun函数中统计传入的字符串s中大写字母和小写字母的个数。
这里需要注意的是在main函数中upper、lower变量分别记录大写字母和小写字母的个数。
这两个int类型的变量要在fun函数中统计字符串s中大写字母和小写字母的个数的时候进行增加的,然后退出fun函数回到main函数中upper、lower变量应该分别是大写字母和小写字母的个数。
然而,根据C语言的语法,普通int类型的变量的值在某函数(例如fun函数)中进行变化之后退出该函数,在main函数中该变量将丢失在那个函数(例如fun函数)的变化而直接恢复到进入函数(例如fun函数)之前的值,也就是说在函数(例如fun函数)的变化都是无效的。
这显然不是我们所希望的,因为我们希望在fun函数中统计大小写字母的过程中upper、lower变量的值得到改变,退出fun函数直接输出upper、lower变量就可以看到大小写字母的个数了。
那如何解决这种问题呢?
根据C语言的语法,以上问题可以通过使用指针解决。
以上的问题是由于参数传递方式为传值方式所导致的,可以通过将传入的参数改为指针类型改变参数传递方式为传地址方式。
所以fun函数的函数头为以下:
voidfun(char*s,int*a,int*b)
分别对应upper、lower的a变量和b变量为指针类型,相应的main函数中传入fun函数的参数为&
upper,&
lower。
这样在fun函数中操作a、b指针才能达到预期效果。
在fun函数中,a指针所指向的内存地址中存放了记录大写字母个数的值,而b指针所指向的内存地址中存放了记录小写字母个数的值。
在fun函数中,我们通过*a、*b引用a、b指针所指向的内存地址中存放的大、小写字母个数的值,当发现大写或者小写字母的时候将*a或者*b加一。
退出fun函数的时候,形式参数a、b由于超出作用域而消失,但是它们指向的内存地址中的值还保留着,这些值在main函数中可以分别通过upper、lower引用,从而解决了函数参数退出函数之后恢复原值的问题。
程序注解如下:
/*s参数表示传入的字符串,a、b参数表示大写字母和小写字母的个数*/
/*s是一个指针,指向传入的字符串的第一个字母*/
/*while(*s)是while(*s!
=’\0’)的简写方式*/
/*s指针指向的字母不为’\0’,就是说循环检查到字符串结束符才退出循环*/
/*判断s指针指向的字母是否是大写字母,如果是就把*a加一*/
(*a)++;
/*判断s指针指向的字母是否是小写字母,如果是就把*b加一*/
(*b)++;
/*s指针往后移动一个字母位置,准备判断下一个字母是否为大小写字母*/
/*upper、lower变量分别记录大写字母和小写字母的个数*/
/*gets函数定义在stdio.h中,所以需要#include<
*/
/*gets函数接收键盘输入的字符串,将其放入参数s数组中*/
/*取存放upper变量、lower变量的地址,将其作为指针传入fun函数*/
/*输出在fun函数中改变的upper、lower变量,也就是大小写字母个数*/
upper,lower);
程序要求从键盘输入3个整数,然后找出最大的数并输出。
实现思路如下:
首先判断前面两个整数,取两者较大者保存在变量max中,然后将max保存的较大者与第三个整数进行比较大小,同样也将两者较大者保存在max变量中,最后max变量记录的值就是3个参加比较大小的整数中最大的一个整数。
程序注解如下:
/*clrscr函数的作用是清屏,将输出窗口的已显示内容全部清除*/
/*clrscr定义在conio.h中,所以需要#include<
/*在输出窗口上输出提示信息"
Inputthreenumbers:
/*从键盘上输入3个整数,按照顺序赋值给a、b、c*/
/*由于指定了"
输入格式,输入的时候三个整数必须以逗号分隔*/
/*例如输入12、45、43三个整数,输入格式如下:
12,45,43*/
/*三个整数输入之后按回车键即可完成整个输入过程*/
/*将输入的三个整数输出*/
/*将前两个整数进行比较,将较大者放入max变量中*/
max=a;
max=b;
/*将前两个整数的较大者也就是max与第三个整数进行比较大小*/
/*较大者放入max变量中*/
max=c;
/*输出三个整数中的最大值*/
题目要求在fun