⑴ 【c语言1】数据统计
int n,m,num;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&m);
int sumi=0;
for(int j=1;j<=m;j++)
{
scanf("%d",&num);
sumi+=num;
}
printf("sum%d=%d\n",i,sumi);
}
return 0;
⑵ c语言中的语句
你好,
这个应该就是一个循环累加,比如
for(i=0;i<n;i++)
for(j=0;j<n;j++)
sum+=a1[i][j];
意思就是将a1这个二维数组中的数据全部相加,即:sum=a1[0][0]+a1[0][1]+a1[0][2]+…………a1[n][n];
⑶ 详细解释代码
第一个功能是求1+2+3+........+100之间的和并输出来换行。
第一个程序也要在main()上加上#include<stdio.h>才能执行.
main ( ) //c程序都是从man()函数开始的
{ int i,sum; //定义一个整形i,sum为和
i=1 ;sum=0;// 初始化i,sum sum 必须初始化为0
while(i<=100) //当i<=100时判断条件i=1小于100循环成立
{ sum= sum+i ; //将i的值和sum的值相加并在赋给sum,此时sum=1即sum=0+1
执行i++即i=i+1,返回条件判断i=2小于100继续执行
sum=sum+i;sum=1+2=3;i++ 当i大于100时退出循环
i++ ;}
printf(“sum=%d\n”,sum); //printf是输出格式括号里面%d是输出整数\n是
换行。前面那个sum=是字符串输出,后面那个sum
求出来的变量sum的值。
}
第二个是mian()函数调用fun函数其功能是从100+99+.....1的和与第一个功能一样只是对fun函数调用了100次。
#include <stdio.h>
main()
{printf("%d\n",fun(100));} //输出fun(100)计算出来的值,
并调用fun函数,将100传递给n
fun(int n) //定义fun 函数此时n=100;
{int t;
if(n==0||n==1) t=1;// 判断n==0||n==1成立时 t=1根据n=100所以跳过t=1;
else t=n+fun(n-1); //t=100+fun(100-1);在次调用fun(99),99传递给n,n=98
直到fun(0)时不再调用
return t; //将t的值返回,此时t的值就是fun(100)计算出来的值.
}
第二个程序只要理解了t=n+fun(n-1)就知道其功能了。首先 t=100+fun(100-1)而fun(99)调用的结果等于99+fun(98)即t=100+99+fun(98).fun(98)=98+fun(97),如下去t就会等于100+99+......fun(1)而到fun(1)时执行了t=1即fun(1)=1.本来fun(1)=1+fun(0)但由于fun(1)已经执行了if(n==0||n==1)为真的语句,不会执行else语句即不会调用f(0)。所以最终结果为100+99+.....1而不是100+99+....1+1.
⑷ 计算1000以内有多少个数其各位数字之和是7 程序设计C语言
#include <stdio.h>
main()
{
int num,i;
for(i=1,num=0;i<1000;i++)
{
if(i/100 + i%100/10 + i%10 == 7)
num++;
}
printf("1000以内各位数字之和是7的数有%d个\n",num);
}
⑸ c语言幻方
1.每个自然数只出现一次,没有考虑
2.数组下标从0开始
3.
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(j==i) s1=s1+a[i][j];
if(i+j==n+1) s2=s2+a[i][j];
}
}
这样没必要
for(i=0;i<n;i++)
{
s1+=a[i][i];
s2+=a[i][n-1-i];
}