c语言中ctod语句的作用,2014年3月计算机二级C语言上机模拟试题及答案 6

给定程序中,函数fun的功能是将a和b所指的两个字符串转换成面值相同的整数,并进行相加作为函数值返回,规定字符串中只含9个以下数字字符。

例如,主函数中输入字符串:32486和12345,在主函数中输出的函数值为:44831。 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。

注意:源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

给定源程序:

#include

#include

#include

#define N 9

long ctod( char *s )

{ long d=0;

while(*s)

if(isdigit( *s)) {

d=d*10+*s-__1__;

__2__; }

return d;

}

long fun( char *a, char *b )

{

return __3__;

}

main()

{ char s1[N],s2[N];

do

{ printf("Input string s1 : "); gets(s1); }

while( strlen(s1)>N );

do

{ printf("Input string s2 : "); gets(s2); }

while( strlen(s2)>N );

printf("The result is: %ld\n", fun(s1,s2) );

}

解题思路:

第一处:数字字符与其对应的数值相差48,所以应填:48。

第二处:到字符串下一个位置,所以应填:s++。

第三处:返回两个数字字符串经转换成数值的和,所以应填:ctod(a)+ctod(b)。

***************************************************

给定程序MODI1.C中 fun 函数的功能是:分别统计字符串中大写字母和小写字母的个数。

例如, 给字符串 s 输入:AAaaBBb123CCccccd,则应输出结果:

upper = 6, lower = 8。

请改正程序中的错误,使它能计算出正确的结果。

注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!

给定源程序:

#include

void fun ( char *s, int a, int b )

{

while ( *s )

{ if ( *s >= ’A’ && *s <= ’Z’ )

*a=a+1 ;

if ( *s >= ’a’ && *s <= ’z’ )

*b=b+1;

s++;

}

}

main( )

{ char s[100]; int upper = 0, lower = 0 ;

printf( "\nPlease a string : " ); gets ( s );

fun ( s, & upper, &lower );

printf( "\n upper = %d lower = %d\n", upper, lower );

}

解题思路:

第一处:在等式右边应写*a。

第二处:在等式右边应写*b。

***************************************************

请编一个函数fun,函数的功能是使实型数保留2位小数,并对第三位进行四舍五入 (规定实型数为正数)。

例如:实型数为 1234.567, 则函数返回 1234.570000;

实型数为 1234.564, 则函数返回 1234.560000。

注意: 部分源程序存在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入

你编写的若干语句。

给定源程序:

#include

float fun ( float h )

{

}

main( )

{ float a;

printf ("Enter a: "); scanf ( "%f", &a );

printf ( "The original data is : " );

printf ( "%f \n\n", a );

printf ( "The result : %f\n", fun ( a ) );

NONO( );

}

解题思路:

本题主要是考察考生保留小数点后两位数并对第三位进行四舍五入。方法是先把这个数乘以100,然后再加0.5(实现四舍五入),再把这个数存放到一个长整型变量中,目的是把小数点后的小数去除,最后把这个数转换成浮点型数除以100,即可得出所的结果。

参考答案:

float fun ( float h )

{

long w ;

w = h * 100 + 0.5 ;

return (float) w / 100 ;

}

※※※※※※※※※※※※※※※※※※※※※※※※※

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值