c语言初级
A. c语言 初级
因为数组定义大小只能用const int类型,
比如
const int n=10;
int a[n];
这样才可以.
B. c语言初级
首次出现int a[8][8]={0}; (注意这里的大括号)是对二维数组进行初始化,告诉系统定义了一个长,宽都是8的数组,初值全是0。后面的a[0][0]是这个数组的第0行第0列的一个元素。
a[0][0]=1就是对这个元素赋值1。
所以 int a[8][8]={0}; a[0][0]=1;是对的。
后面的int a[8][8]={0};是对的,但int a[0][0]=1;(注意这里没有大括号),首先这样的初始化就是错的了,即使加了大括号 int a[0][0]={1}; 虽然式子对了,但数组名和前面的a[8][8] 重复了,(都是a),对一个数组变量重复定义当然错了。
好晕啊,呼
C. C语言编程初级
错误的地方有三处:
1,用double声明的变量a,b,输入格式却是“f",应该用”lf"来输入;或者把double 变为:float。
2,if语句中t=0的意思是把0赋予t,这样if语句就恒为假了。应该为:if(t==0)
3,otherwise 表否则,C语言中是不存在的,应该为else。
所以,正确的代码应该为:
#include<stdio.h>
intmain()
{
floata,b;
intt,c1,c2;
scanf("%f",&a);
b=a+0.5;
c1=(int)a;
c2=(int)b;
t=c1-c2;
if(t==0)printf("%d",c1);
elseprintf("%d",c2);
return0;
}
D. C语言初级程序
#include<stdlib.h>
#include<math.h>
#include<stdio.h>
intp(intn,intk)
{intres=n;
for(inti=k;i>1;i--)
res=res*n;
returnres;
}
intnumber(intn)
{
inttemp,k=0,i=1,sum=0;
temp=n;
while(n)///这里是求n是一个几位数吧
{
n/=10;
k++;
}
n=temp;
for(i;i<=k;i++)///这里是求每一个数字的k次幂(k其实是等于你输入的n,所以我觉得求k是多此一举)
{
intt;
t=p(n%10,k);///p是自己写一个函数,见上面
///t=(int)(pow(n%10,k));///这里有问题,记住pow是浮点型的运算,浮点型的运算是会丢失精度的,浮点型里面的1,并不是精确的1,n次方后精度越来越差,你可以把每次t的值输出来看一下,下面那一行,你打开),改为自己写一个求一个整数的k次幂的函数,
///printf("%d ",t);
sum+=t;
n/=10;
}
returnsum;
}
intmain()///程序看了半天我看懂了,以后写代码尽量按照规范去写,不然别人很难懂
{
inti,n;
scanf("%d",&n);
for(i=(int)(pow(10,n-1));i<=(int)(pow(10,n)-1);i++)///你这里应该是只求位数为n的自幂数吧,初始应该是i=...,而不是i>=...吧,>=是关系表达式,结果是0或者1.
{
if(i==number(i))
printf("%d",i);
}
return0;
}
在你的基础上改了,写了注释在里面,希望你认真理解。
E. c语言初级函数
对于函数,有两个概念要理解好
那就是实参和形参。
形参是在函数的原型里面的参数值,如下面函数原型
void inc(int a);
a就是形参,如果在使用的时候,给函数传递一个变量,如
int x = 5; //在这里x只是一个变量
inc(x);// 把他递给函数时,他就是函数运行时的一个参数,与a不同的是,x叫做实参,因为参与实际的运算。
而a只是表明一个变量,甚至上面的函数原型可以写为
void inc(int);//a没必要存在。
不过在实现这个函数时,就必须指明形参的名字,毕竟要操作他嘛。
void inc(int a)
{
a = a + 1;
}
上面讲了什么是形参,什么是实参。
形参是在定义函数原型,或者实现函数功能时用的,
而实参是在调用函数时使用的。
调用过程,会把x送给函数inc,但是这种说法很表面,具体说,应该是把x的值的大小送给inc。也就是函数的参数传递是传值的形式
我在main函数里定义了一个变量x,并初始化为5;
int x = 5;
如果调用inc(x),这样的调用不会改变变量x所对应的内存空间里面的数据,
这里用到传值,意思就是只是把x对应的值传给函数,而x对应的内容是不会变的。
要想改变x的内容,必须传递指向x的指针。
上面的函数可以改写成下面这个。
void inc(int *a) //这里的*用于定义a为一个指针,指向int类型
{
(*a) = (*a) + 1; //这里的*含义和上面的不同,表示使用地址a对应的值
}
调用时使用
inc(&x);// & 是取地址符
这样,就能改变x的值
下面是一个程序可以测试
#include <stdio.h>
void Inc1(int a);
void Inc2(int *a);
int main()
{
int x = 5;
Inc1(x);
printf("x的值为5,使用传值的函数后,x的值为:%d\n",x);
Inc2(&x);
printf("x的值为5,使用传地址的函数后,x的值为:%d\n",x);
return 0;
}
void Inc1(int a)
{
a = a + 1;
}
void Inc2(int *a)
{
*a = *a + 1;
}
解决办法:
上面的函数改写为
void f(int *x, int *y)
{ int t;
if(*x < *y) {
t=*x;*x=*y;*y=*t;
}
}
调用时使用
f(&a,&b);f(&a,&c);f(&b,&c); 即可。
不过对于指针的操作要小心,在C++里面使用了另外一种函数实参到形参的技术,叫做引用,可以很方面的实现这个功能,同时避免了指针操作带来的问题。
下面是c++的写法
#include <iostream>
using namespace std;
void f(int &x, int &y) //这个时候&不是取地址了,而是表示变量的引用
{ int t;
if(x<y)
{
t=x;x=y;y=t;
}
}
int main()
{
int a=4,b=3,c=5;
f(a,b);f(a,c);f(b,c);
cout<<a<<' '<<b<<' '<<c<<endl;
return 0;
}
建议,标准的c或者c++的程序都必须使用如下原型
int main()
{
}
至于要不要使用return关键字,去返回一些结果,看你程序的功能及结构,标准的是可以不return的,但是如果你是在VC环境下编程的话,不return会报错,我只能说微软太TMD。
我都是在linux用gcc的,比较符合标准。
以上程序,都在一个IDE下实现测试过
那个IDE的网址是www.codeblocks.org
F. 初级c语言,,
计算后判断什么,请说得明白一点。
G. 大学初级c语言
#include <stdio.h>
void main()
{
int a,b,sum;
a=2;
b=3;
sum=a+b;
printf("%d %d %d ",a,b,sum);
}
H. 关于c语言编程(初级)
你思路有点混乱 用的变量太多而且没有实际意义
看的时候费劲
for(i=0;i<=(2*n+1);i=i+1)//求2n+1的阶乘
c=c*(i+1); //自己想想是不是多乘了一项
改成
for(i=1;i<=(2*n+1);i=i+1)//求2n+1的阶乘
c=c*i;
for(r=0;r<=(2*m+1);r=r+1)//求n的阶乘
d=d*(r+1); //道理同上
改成
for(r=1;r<=2*m+1;r++)//求2*m+1的阶乘
d=d*r;
然后把c=1;d=1;放在 do {}while(); 里面
///////////////明白了么?下面是你的程序 改好了。你自己研究研究怎么能把程序写点好看点吧
//////////////////////////////////////
int main(int argc, char *argv[])
{
/*利用正弦的柯西展开式求正弦值,弧度x,精度y,判断依据:先令a赋n=1的值,然后对b赋n=2时的值,作差,小于精度则输出,大于精度则将n=n+1,重复判断,直到满足精度*/
float c,d,x,y,a,b,S,Q,e,f;
int n,i,r,m;
c=1,d=1,n=0;
scanf("%f%f",&x,&y);//输入弧度x 和精度y
S=x; //对S赋值
Q=x; //对Q赋值
do
{
n=n+1;
c=1;
d=1;
for(i=1;i<=(2*n+1);i++)//求2n+1的阶乘
c=c*i;
S=S+pow(-1,n)*pow(x,(2*n+1))*(1/c);//计算第一个正弦值a
a=S; //赋值给a
m=n+1; //对n加一赋给m
for(r=1;r<=2*m+1;r++)//求2*m+1的阶乘
d=d*r;
Q=Q+pow(-1,m)*pow(x,(2*m+1))*(1/d);//计算第二个正弦值b
b=Q; //对b赋值
e=a-b; //对A B作差
f=fabs(e); //作差结果取绝对值赋值给f
}
while(fabs(a-b)>=y);//比较后输出
printf("%f\n",a);
system("PAUSE");
return 0;
}
I. C语言 初级
> 的优先级比 = 高
且 从左自右
c=a>b>1&&(a++==1+b++)
先 执行 a>b 为真,即是 1
再 执行 (a>b) > 1 ,即 1>1, 为假,即是 0
然后执行 c= 0,赋值完成后 c即是0;
c=a>b>1 即是 0
由于是 &&
所以整个表达式 即为 0,后面的便不再执行
所以此时 a=3,b=2,c=0
a+b+c= 5
J. C语言初级
#define N 10;
宏定义后面不能有分号