循环
练习:
1、 求出1到10000 之间的完全数.
#include <stdio.h>
int main(int argc, const char *argv[])
{
int num, sum = 0;
int i;
for(num = 1; num <= 10000; num++)
{
for(i = 1, sum = 0; i <= num/2; i++)
{
if(num % i == 0)
{
sum = sum + i;
}
}
if(sum == num)
{
printf("num : %d\n", num);
}
}
return 0;
}
2、 输入数字n , 打印n行*号, 组成等腰三角形.
#include <stdio.h>
int main(int argc, const char *argv[])
{
int i, j, k;
int num;
printf("请输入一个整型数: ");
scanf("%d", &num);
for(i = 0; i < num; i++)
{
for(j = num; j > i+1; j--)
{
printf(" ");
}
for(k = 0; k < 2*i+1; k++)
{
printf("*");
}
printf("\n");
}
return 0;
}
3、 求出1到10000之间的所有水仙花数.
#include <stdio.h>
int main(int argc, const char *argv[])
{
int a, b, c, num;
int sum;
for(num = 100; num <= 999; num++)
{
a = num / 100 ;
b = (num - a*100)/10;
c = num%10;
sum = a*a*a + b*b*b + c*c*c;
if(sum == num)
{
printf("num : %d\n", num);
}
}
return 0;
}
4、 例如: 输入字符D 输出倒序前面补* 例:***DCBA
#include <stdio.h>
int main(int argc, const char *argv[])
{
char ch;
int i, j, k;
ch = getchar();
for(i = 0; i <= ch - 'A'; j-i++)
{
for(j = 0; j <= 2*i; j++)
{
if(j < i)
{
printf("*");
}
else
{
putchar(ch-(j-i));
}
}
printf("\n");
}
return 0;
}
数组 :
- 相同数据类型 有序 集合 ;
- 一维数组 : 数组下标只有一个.
- 存储类型 数据类型 数组名[数组大小] ;
- int a[6] ;
- 全部初始化 : 如果数组元素全部初始化, 数组大小可以省略.
- 部分初始化 : 后面没有进行初始化的部分默认补零.
- 数组元素的引用: 数组名[下标] ; 下标从0开始.
- 注意 : 数组越界, 编译器不会对该错误进行检查.
查找段错误位置:
- gcc -g test.c
- /a.out 生成core文件
- gdb ./a.out core 启动GDB
- r : 执行程序a.out
quit : 退出 .