c语言问题? c语言常见问题集
c语言的问题
我开始确实没考虑到,楼主说的是不定参数,里面可以有多个不同参数,下面的链接里有详细的说明。学了这么久居然没发现,哎真是孤陋寡闻了!
不定参数在C语言中的应用实例:不定参数当年做为C/C++语言一个特长被很多人推崇,但是实际上这种技术并没有应用很多。除了格式化输出之外,我实在没看到多少应用。主要原因是这种技术比较麻烦,副作用也比较多,而一般情况下重载函数也足以替换它。尽管如此,既然大家对它比较感兴趣,我就简单总结一下它的使用和需要注意的常见问题。
刚学C语言的时候,一般人都会首先接触printf函数。通过这个函数,你可以打印不定个数的变量到屏幕,如:
printf("%d", 3);
printf("%d,%d",3,4);
上述代码看似简单,实际上却需要我们解决许多问题。在我们设计printf的时候,我们是不知道到底会传入几个参数的。在这种未知的情况下,我们需要解决下面几个问题:
怎么告诉printf我们会传入几个参数
printf怎么去访问这些参数
复制的一部分
C语言的问题~~~~~~~~~~~~~~~~
:1:21: error: conio.h: 没有该文件或目录
: In function ‘fun’:
:12: error: subscripted value is neither array nor pointer
:12: error: subscripted value is neither array nor pointer
:13: error: subscripted value is neither array nor pointer
:13: error: subscripted value is neither array nor pointer
:13: error: subscripted value is neither array nor pointer
:13: error: subscripted value is neither array nor pointer
c: In function ‘main’:
c:23: warning: passing argument 1 of ‘fun’ makes integer from pointer without a cast
:6: note: expected ‘int’ but argument is of type ‘int *’
你这错误也太多了。
按楼上的说法修改void fun( int a[], int n ) 后可以运行
83 86 77 15 93 35 86 92 49 21
62 27 90 59 63 26 40 26 72 36
**** after sort ****
15 21 26 26 27 35 36 40 49 59
62 63 72 77 83 86 86 90 92 93
关于c语言的问题
输入屏幕时要这样输:1,2,3
不能这样输:1 2 3
逗号不能省略,为什么呢?这是你的程序是这样的scanf("%d,%d,%d",&a,&b,&c);
你要按照你的引号里面的格式输入。
当然你可以改为:scanf("%d%d%d",&a,&b,&c);
这样就可以输入:1 2 3
这个程序的最后运行结果是输出a/b/c中最大的那个。
c语言问题。。。
1、 有如下程序
int func(int a,int b)
{ return(a+b); }
main()
{ int x=2,y=5,z=8,r;
r=func((x-y),z);
printf("%d\n",r); }
该程序的输出结果是_____C_____。
A) 10 B) 13
C) 5 D) 15
2、 以下函数返回a数组中最小值所在的下标,在划线处应
填入的是________。
fun( int a[],int n)
{ int i,j=0,p;
p=j;
for(i=j;i<n;i++)
if(a[i]<a[p])_________D______;
return (p); }
A) i=p B) a[p]=a[i]
C) p=j D) p=i
3、 以下说法中正确的是___C_____。
A) C语言程序总是从第一个定义的函数开始执行
B) 在C语言程序中,要调用的函数必须在main()函数中定义
C) C语言程序总是从main()函数开始执行
D) C语言程序中的main()函数必须放在程序的开始部分
4、 下面程序的输出是___B______。
int m=13;
int fun(int x,int y)
{int m=3;
return(x*y-m); }
main()
{int a=7,b=5;
printf("%d\n",fun(a,b)/m); }
A) 1 B) 2
C) 7 D) 10
5、 以下函数func()的功能是:使具有n个元素的一维数组b的每个元素的值
都增加2,划线处应填入________。
func(int b[ ],int n)
{ int ;
for(i=0;i<n;i++) ____D______; }
A) b[i++] B) b[i]++
C) b[i+=2] D) b[i]+=2
6、 函数f的功能是:测定字符串的长度,空白处应填入________。
int f(char s[ ])
{ int i=0;
while(s[i]!='\0') i++;
return (____B____); }
main( )
{ printf("%d\n",f("goodbye!")); }
A) i-1 B) i
C) i+1 D) s
7、 如果一个函数位于C程序文件的上部,在该函数体内说明语句后的复合
语句中定义了一个变量,则该变量____B____。
A) 为全局变量,在本程序文件范围内有效
B) 为局部变量,只在该函数内有效
C) 为局部变量,只在该复合语句中有效
D) 定义无效,为非法变量
8、 对以下程序,正确的说法是___B_____。
sub (char x,char y)
{ int z; z=x%y; return z; }
main( )
{ int g=5,h=3,k;
k=sub(g,h);
printf("%d\n",k); }
A) 实参与其对应的形参类型不一致,程序不能运行
B) 被调函数缺少数据类型说明,程序不能运行
C) 主函数中缺少对被调函数的说明语句,程序不能运行
D) 程序中没有错误,可以正常运行
9、 请读程序:
#include <stdio.h>
f(in b[ ], int n)
{ int i, r=0;
for(i=0; i<=n; i++) r=r+b[i];
return r; }
main()
{ int x, a[]={ 2,3,4,5,6,7,8,9};
x=f(a, 3);
printf("%d\n",x); }
上面程序的输出结果是____B____。
A) 20 B) 14
C) 9 D)5
10、 以下叙述中错误的是__A______。
A) 在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值
B) 在C中,在调用函数时,实参和对应形参在类型上只需赋值兼容
C) 在C中,外部变量的隐含类别是自动存储类别
D) 在C中,函数中的静态变量可以赋初值,只在编译时赋一次初值