1.填空題
下列給定程序中,函數(shù)fun()的功能是:將長整型數(shù)中每一位上為偶數(shù)的數(shù)依次取出,構(gòu)成一個新數(shù)放在t中。
【答案】
【1】long d 【2】d%2==0
2.改錯題
下列給定程序中,fun函數(shù)的功能是:分別統(tǒng)計字符串中大寫字母和小寫字母的個數(shù)。
例如,給字符串s輸入:AaaaBBb123CCccccD,則應(yīng)輸出結(jié)果:upper=6,lower=8。
請改正程序中的錯誤,使它能計算出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
試題程序:
#include <conio.h>
#include <stdio.h>
void fun(char *s,int a,int b)
{
while(*s)
{
if(*s>='A'&&*s<='Z')
a++;
if(*s>='a'&&*s<='z')
b++;
s++;
}
}
main()
{
char s[100];
int upper=0,lower=0;
clrscr();
printf("\nPlease enter a string:");
gets(s);
fun(s,&upper,&lower);
printf("\nupper=%d lower=%d\n",upper,lower);
}
【答案】
第1處:void fun(char *s,int a,int b)應(yīng)改為void fun(char *s,int *a,int *b)
第2處:a++;應(yīng)改為(*a)++;
第3處:b++;應(yīng)改為(*b)++;
【考點】函數(shù)定義、參數(shù)傳遞及指針運用。
【解析】
(1)由于main函數(shù)中調(diào)用的fun函數(shù)參數(shù)是按指針傳遞的,因此在fun函數(shù)的定義參數(shù)表中應(yīng)將形參定義成指針,即將int a和int b分別改為int*a和int*b。
(2)因為a和b是指向upper和lower的兩個指針,所以在執(zhí)行a++和b++后,a、b不再指向upper和lower,而是分別指向upper和lower的下一個單元,而upper和lower的值不會發(fā)生變化。但程序要求upper和lower的值遞增,因此必須使指針所指的變量發(fā)生變化,而不是指針自己變化。所以應(yīng)改為:(*a)++;(*b)++;。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |