工学

问答题在程序设计中,可采用下列三种方法实现输出和输入: (1)通过scanf和printf语句; (2)通过函数的参数显式传递; (3)通过全局变量隐式传递。 试讨论这三种方法的优缺点。

题目
问答题
在程序设计中,可采用下列三种方法实现输出和输入: (1)通过scanf和printf语句; (2)通过函数的参数显式传递; (3)通过全局变量隐式传递。 试讨论这三种方法的优缺点。
如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

请编写函数proc,其功能是:计算并输出下列多项式值。 S=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)-1/2n) 例如,若主函数从键盘给n输入20后,则输出为S= 0.680803。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句。 试题程序: include t:stdio.h> double proc(int n) { } void main { int n; double slim; printf("\nInput n:"); scanf("%d",&n); sum=proc(n)。 printf("\ns=%f\n",sum); }


正确答案:

double proc(int n)
{
int i;
double s=0.0; //s为其和的变量
for(i=1;i<=n;i+十)
S=s+(1.0/(2*i-1)-1.O/(2*i)); //计算s
=(1-1/z)+(1/3-1/4)+…+(1/(2n-1)-1/
2n)
return s; //最后把所得到的和返回到主函数中
}
【解析】由题目中所给表达式可知,多项式的值为n项表达式的和。可以利用n次循环求出n项表达式的值,求和放在变量s中。最后将多项式的值返回到主函数当中。

第2题:

两次运行下列的程序,如果从键盘上分别输入3和1,则输出结果是( )。 main() { int x; scanf("%d",&x); if(x++>2)printf("%d",x); else printf("%d\n",x--); }

A.4和2

B.4和1

C.4和0

D.3和1


正确答案:A
解析: 本题考查if else语句。首先scanf函数通过键盘读入x的值。当x=3时,第一个if语句,先判断条件,取x的值3和2比较,然后将x的值加1,发现条件成立,执行下列的printf语句,输出x的值4。当x=1时,第一个if语句,先判断条件,取x的值1和2比较,然后将x的值加1(x的值变为2),发现条件不成立,执行下列的else语句,先输出x的值2,再将x的值减1。

第3题:

若有说明语句 : double *p,a; 则能通过 scanf 语句正确给输入项读入数据的程序段是A)*p=&am

若有说明语句 : double *p,a; 则能通过 scanf 语句正确给输入项读入数据的程序段是

A)*p=&a; scanf(" % 1f",p);

B)*p=&a; scanf(" % f",p);

C)p=&a; scanf(" % 1f",*p);

D)p=&a; scanf(" % 1f",p);


正确答案:D
(24)D) 解析 : p=&a 表示将变量 a 的地址送给指针 p; scanf( “ %lf ” ,p) 表示用键盘输入的数给变量 p 地址中。

第4题:

编写函数fun(),函数的功能是:根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。

S=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n)

例如:若n的值为11时,函数的值为1.833333。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

include <conio.h>

include <stdio.h>

include <string.h>

float fun(int n)

{

}

main()

{

int n;

float s;

clrscr();

printf("\nPlease enter N: ");

scanf("%d",&n);

s=fun(n);

printf("The result is:%f\n " , s);

}


正确答案:float fun(int n) { int is1=0; float s=0.0; for(i=1;i<=n;i++) {s1=s1+i; /*求每一项的分母*/ s=s+1.0/s1; /*求多项式的值*/ } return s; }
float fun(int n) { int i,s1=0; float s=0.0; for(i=1;i<=n;i++) {s1=s1+i; /*求每一项的分母*/ s=s+1.0/s1; /*求多项式的值*/ } return s; } 解析:本题中用s1来表示式中每一项的分母,而每一项的分母都是其前一项分母加项数。注意由于s1定义成一个整型,所以在s=s+1.0/s1中不能把1.0写成1。

第5题:

设变量a和b已定义为int类型,若要通过scanf(”a=%d,b=%d”,&a,&b);语句分别给a和b输入1和2,则正确的数据输入内容是()。


正确答案:a=1,b=2
scanf()函数是格式化输入函数,它从标准输入设备(键盘)读取输入的信息,其调用格式为:scanf("<格式化字符串>",<地址表>),scanf("a=%d,b=%d",&a,&b)中a=%d,b=%d之间有逗号,在输入数据时也要加逗号,如果去掉逗号,输入时就不用逗号,而用空格,tab键或回车键将各个数据隔开。

第6题:

阅读以下程序includemain(){Int Case;float printF;printf("请输入2个数:");scanf("%d

阅读以下程序 #include<stdio.h> main() {Int Case;float printF; printf("请输入2个数:"); scanf("%d %f",&Case,&printF); printf("%d%f\n",Case,printF); } 以下说法正确的是( )。

A.定义浯句出错,Case是关键字,不能用作用户自定义标识符,printF不能用作用户自定义标识符

B.定义语句出错,Int无法被识别

C.定义语句无错,scanf不能作为输入函数使用

D.定义语句无错,printf不能输出Case的值


正确答案:B
解析:C语亩足一种大小写敏感的语言,因此Int应为int,而Case printF则可以使用。

第7题:

若执行下列程序时从键盘上输入2,则输出结果是()。inclUdemain(){int a;scanf("%d",&

若执行下列程序时从键盘上输入2,则输出结果是( )。

#inclUde<stdio.h>

main()

{int a;

scanf("%d",&A);

if(a++<3)

printf("%d\n",A);

else printf("%d\n",a--);}

A.1

B.3

C.2

D.4


正确答案:B
解析: 本题考查if else语句。程序中首先使用函数scanf()通过键盘读入a的值,并通过第1个if语句,先判断条件,取a的值2和3比较,然后将a的值加1,发现条件成立,执行下列的printf语句,输出a的值3。

第8题:

阅读以下程序

#include <stdio.h>

main()

{ int case; float printF;

printf(" 请输入 2 个数 : ");

scanf("%d %f",&case,&printF);

printf("%d %f\n",case,printF);

}

该程序编译时产生错误,其出错原因是

A) 定义语句出错, case 是关键字,不能用作用户自定义标识符

B) 定义语句出错, printF 不能用作用户自定义标识符

C) 定义语句无错, scanf 不能作为输入函数使用

D) 定义语句无错, printf 不能输出 case 的值


正确答案:A

第9题:

请编写函数fun(),其功能是:计算并输出下列多项式的值。

S=1+4/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n)

例如,着主函数从键盘给n输入50后,则输出为 S=1.960784。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

include <stdio.h>

double fun(int n)

{

}

main ()

{

int n;

double s;

printf ("\nInput n: ");

scanf ("%d", &n);

s=fun (n);

printf ("\n\ns=%f\n\n", s);

}


正确答案:double fun (int n) { int i; double s=0.0s1=0.0; for(i=1;i=n;i++) {s1=s1+i; /*求每—项的分母*/ s=s+1.0/s1; /*求S=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n)*/ } return s; }
double fun (int n) { int i; double s=0.0,s1=0.0; for(i=1;i=n;i++) {s1=s1+i; /*求每—项的分母*/ s=s+1.0/s1; /*求S=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n)*/ } return s; } 解析:该程序的数学思路是:在程序中输入n后,以前n项的和作为分母递加,由于s1是浮点类数据所以s=s+1.0/s1; for 循环的作用是每一次循环给总结果s加上一项1.0/s1。

第10题:

两次运行下列的程序,如果从键盘上分别输入3和1,则输出结果是()。 main() {int x; scanf("%d",&

两次运行下列的程序,如果从键盘上分别输入3和1,则输出结果是( )。

main()

{ int x;

scanf("%d",&x);

if(x++>2) printf("%d",x);

else printf("%d\n",x--);

}

A.4和2

B.4和1

C.4和0

D.3和1


正确答案:A
解析:本题考查if else语句。首先scanf函数通过键盘读入x的值。,当x=3时,第一个if语句,先判断条件,取x的值3和2比较,然后将x的值加1,发现条件成立,执行下列的printf语句,输出x的值4。当x=1时,第一个if语句,先判断条件,取x的值1和2比较,然后将x的值加1(x的值变为2),发现条件不成立,执行下列的else语句,先输出x的值2,再将x的值减1。

更多相关问题