赞
踩
i控制行,j控制列。
#include<stdio.h>
int main(void)
{
int i, j;
for (i = 1; i <= 9; i++)
{
for (j = 1; j <= i; j++)
{
printf("%d*%d=%-2d ", j,i, i * j);
}
printf("\n");
}
return 0;
}
运行展示
有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
兔子的规律为数列1,1,2,3,5,8,13,21…
#include<stdio.h> int main(void) { long s1, s2,sum; int month,i; s1 = s2 = sum=1; printf("请输入月数:"); scanf("%d", &month); for (i = 1; i <= month; i++) { if (i > 2) //第三个月兔子数量开始增长 { sum = s1 + s2;/*前两个月加起来赋值给第三个月*/ s1 = s2 ; //重新获取前2个月数量 s2 = sum; //重新获取前1个月数量 } printf("%d月份兔子个数为:%ld\n", i, sum); } return 0; }
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
#include<stdio.h> #include<math.h> int main(viod) { int i,x; int count = 0; int flag; for (x = 101; x <= 300; x++) { flag = 1; for (i = 2; i <= sqrt(x); i++) { if (x % i == 0)//如果能整除,就不是素数 { flag = 0;//标记赋值为0 break;//跳出本次数字判断循环,进行下一个数的计算 } } if (flag) // 如果为1 则是素数 { printf("%d ", x); count++;//统计有多少个素数 } } printf("\n101-300之间素数总共%d个", count); return 0; }
一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如 6=1+2+3.编程找出 10000 以内的所有完数。
#include<stdio.h> int main(void) { int i,x,sum; for (x =2; x < 10000; x++)//1不属于完全数,所以从2开始 { sum= 1; for (i = 2; i <= x/2; i++) { if(x%i==0)//如果整除则是因数, sum += i;//因数相加求和 } if (x == sum)//如果因数求和等于自身就是完全数 printf("%d ", x); } return 0; }
计算出的完全数为 6 28 496 8128
数组内数字为0-99的随机数
#include<stdio.h> #include <stdlib.h> #include<time.h> int main(void) { int a[4][4],b[4][4];//定义2个4*4的数组 int i, j;//行列变量 srand((unsigned)time(NULL));//随机数种子 printf("原始a数组:\n"); for (i = 0; i < 4; i++) { for (j = 0; j < 4; j++) { a[i][j] = rand()%100;//随机生成0-99的数字填充数组 printf("%2d ", a[i][j]); } printf("\n"); } printf("变换后b数组:\n"); for (i = 0; i < 4; i++) { for (j = 0; j < 4; j++) { b[i][j] = a[j][3-i];//进行逆时针旋转 printf("%2d ", b[i][j]); } printf("\n"); } return 0; }
#include<stdio.h> int main(void) { int i, j,x; int a[6][6] = {0};//初始化6*6的数组 for (i = 0; i < 6;i++)//生成杨辉三角 { a[i][0] = 1; a[i][i] = 1; for (j = 1; j <= i;j++) { a[i][j] = a[i - 1][j - 1] + a[i - 1][j]; } } for (i = 0; i < 6; i++)//打印杨辉三角 { for (x = 0; x < (6-i-1); x++) { printf(" ");//空格补齐位置 } for (j = 0; j <= i; j++) { printf("%3d ",a[i][j]); } printf("\n"); } return 0; }
要求所有成绩均放入一个 4 行 5 列的数组中,输入时同一人数据间用空格,不同人用回车 其中最后一列和最后一行分别放每个学生的平均成绩、每门课程的平均成绩及班级总平均
#include<stdio.h> int main(void) { int n,i; float sum; float a[4][5]; printf("请输入学生姓名和成绩:\n"); for (n = 0; n < 3; n++) { sum = 0; for(i=0;i<4;i++) scanf("%f", &a[n][i]);//输入成绩 for (i = 0; i < 4; i++) sum += a[n][i]; a[n][4] = sum / 4;//每行最后一列为该学生成绩平均值 } for (i = 0; i < 5; i++)//最后一行为该科目成绩平均值 { a[3][i]= (a[0][i] + a[1][i] + a[2][i] ) / 3; } printf("学生成绩单为:\n"); for (n = 0; n < 4; n++)//打印成绩单 { for (i = 0; i < 5; i++) { printf("%.2f ", a[n][i]); } printf("\n"); } return 0; }
如输入 windows 输出 swodniw
#include<stdio.h> #include<string.h> int main(void) { char str[10]; int len,i; printf("请输入字符串:"); scanf("%s", str); len = strlen(str); for (i = 0; i < len; i++) { printf("%c", str[len - i-1]);//倒序打印 } return 0; }
#include<stdio.h> #include<stdlib.h> int main(void) { char s[100], c; int i,k; printf("请输入一个字符串:"); scanf("%s", s); getchar(); //gets(s); printf("请输入一个字符:"); c = getchar(); for (i =k= 0; s[i] != '\0'; i++) { if (s[i] != c) s[k++] = s[i]; //如果不等于c里的字符 就进行赋值 } s[k] = '\0';//末尾补上\0 printf("处理后字符串为%s\n", s); system("pause"); return 0; }
编写一个 void sort(int *x,int n)实现将 x 数组中的 n 个数据从大到小 排序。 n 及数组元素在主函数中输入。将结果显示在屏幕上并输出到文件 p9_1.out 中
#include<stdio.h> #include<stdlib.h> void BubbleSort(int* x, int n)//我这里用的冒泡排序 { int i,j,tmp; for (j = 0; j < n; j++) { for (i = 0; i < n-j; i++) { if (x[i] < x[i + 1]) { //交换数据 tmp = x[i]; x[i] = x[i + 1]; x[i + 1] = tmp; } } } } int main(void) { int i, a[10]; printf("请输入10个数字:"); for (i = 0; i < 10; i++) scanf("%d", &a[i]); BubbleSort(a, 10); FILE* fp; fp = fopen("p9_1.out", "w"); for (i = 0; i < 10; i++) { printf("%d ", a[i]); fprintf(fp, "%d ", a[i]); } fclose(fp); return 0; }
已知数组 a 中的元素已按由小到大顺序排列,以下程序的功能是将输入的一个数插入数 组 a 中,插入后,数组 a 中的元素仍然由小到大顺序排列
#include<stdio.h> int main() { int a[10] = { 1,3,4,5,25,29,40 }; /*a[0]为工作单元,从 a[1]开始存放数据*/ int x, i; int len = 6;//数组长度0-6 printf("请输入一个整数:"); scanf("%d", &x); for (i = len; i >= 0; i--) { if (x <= a[i]) a[i + 1] = a[i]; else { a[i + 1] = x; break; } } for (i = 0; i <= 7; i++) printf("%d ", a[i]); return 0; }
输入26后,排序后输出新的数组
字符串、字符 c1 和 c2 均在主函数中输入,将原始字符串和替换后的字符串显
示在屏幕上,
#include<stdio.h> #include<assert.h> replace(char* s, char c1, char c2)//替换函数 { assert(s); int i; for (i = 0; s[i] != '\0'; i++)//这个用\0是字符,所有用单引号,不能用双引号 { if (s[i] == c1)//如果等于C1则替换为C2 s[i] = c2; } } int main() { char c1, c2; char s[100] ; printf("请输入字符串"); scanf("%s", &s); getchar(); printf("请输入被替换的字符"); scanf("%c", &c1); getchar(); printf("请输入替换的字符"); scanf("%c", &c2); replace(s, c1, c2); printf("%s", s); return 0; }
在一个字串 s1 中查找一子串 s2,若存在则返回子串在主串中的起始位置
,不存在则返回-1。
#include<stdio.h> #include<string.h> int strSearch(const char* str1, const char* str2) { int sp1, sp2, sp, s1len, s2len; s2len = strlen(str2); for (sp1 = 0; str1[sp1] != '\0'; sp1++)//我用的是for循环,也可以用while { sp = sp1; for (sp2 = 0; str2[sp2] != '\0'; )//如果不是'\0'就继续循环 { if (str1[sp] == str2[sp2])//如果两个相等就比较下一个 { sp++; sp2++; } else break;//如果出现不相等就跳出本层循环。 } if (sp2 == s2len)//如果比较的长度等于str2的长度,就说明全部比较完了,符合包含的条件,返回此时str1的位置 return sp1; } return -1; } int main() { char s1[100] ; char s2[100]; printf("输入第一个字符串:"); scanf("%s", &s1); printf("输入第2个字符串:"); scanf("%s", &s2); printf("%d", strSearch(s1, s2)); return 0; }
#include<stdio.h> #include<stdlib.h> struct student { int num; char* name; char sex; int age; }; struct student stu[5] = { {1001,"lihua",'F',18}, {1002,"liuxing",'M',19}, {1003,"huangke",'F',19}, {1004,"fengshou",'F',19}, {1005,"Wangming",'M',18}}; int main(void) { //int i; struct student* ps; printf("Num \tName\t\t\tSex\tAge\t\n"); /*用指针变量输出结构体数组元素。 */ for (ps = stu; ps < stu + 5; ps++) printf("%d\t%-10s\t\t%c\t%d\t\n",ps->num,ps->name,ps->sex,ps->age); /*用数组下标法输出结构体数组元素学号和年龄。 */ /*for (i = 0; i < 5; i++) printf("%d\t%d\t\n",stu[i].num,stu[i].age);*/ system("pause"); }
#include<stdio.h> #include<stdlib.h> struct student { int num; char* name; int age; struct student* next; }; void main(void) { struct student a, b, c, * head, * p; a.num = 1001; a.name = "lihua"; a.age = 18; /* 对结点成员进行赋值 */ b.num = 1002; b.name = "liuxing"; b.age = 19; c.num = 1003; c.name = "huangke"; c.age = 18; head = &a; /* 建立链表, a 为头结点 */ a.next = &b; b.next = &c; c.next = NULL;//c为结尾,next为NULL p = head; /* 输出链表 */ do { printf("%5d,%s,%3d\n", p->num, p->name, p->age); p = p->next; } while (p != NULL); system("pause"); }
回文字符串是指从左到右读和从右到左读
完全相同的字符串。
#include<stdio.h> #include<string.h> int main(void) { char str[100]; int i, j,n; printf("请输入一个字符串"); scanf("%s", &str); n = strlen(str); for (i = 0, j = n - 1; i < j; i++, j--) { if (str[i] != str[j]) break; } if (i >= j) printf("是回文字符串"); else printf("不是回文字符串"); return 0; }
从小到大,排序后结果输出到屏幕及文件 myf2.txt
//冒泡算法 #include<stdio.h> void bubbleSort(int a[], int n) { int i, j, t; for (i = 0; i <= n - 1; i++) { for (j = 0; j < i; j++) { if (a[j] > a[j + 1]) { t = a[j]; a[j] = a[j + 1]; a[j + 1] = t; } } } } int main(void) { int a[10] = { 1,5,7,8,96,4,10,48,2,46 }, n = 10, i; bubbleSort(a, 10); FILE* f; if ((f = fopen(" myf2.txt", "w")) == NULL) printf("open file myf2.txt failed!\n"); for (i = 0; i < 10; i++) { printf("%d ", a[i]); fprintf(f, "%d ", a[i]); } fclose(f); //system("pause"); }
#include<stdio.h> double countpi(double eps) /*eps 为允许误差*/ { int m = 1; double temp = 1.0, s = 0; while (temp >= eps)//当每一项大于误差时则继续计算 { s += temp; temp = temp * m / (2 * m + 1); m++; } return(2 * s); } main() { FILE* fp; double eps = 1e-5, pi; if ((fp = fopen("p7_3.out", "w")) == NULL) { printf("cannot open the file\n"); //exit(0); } pi = countpi(eps); printf("pi=%lf\n", pi); fprintf(fp, "pi=%lf\n", pi); fclose(fp); //system("pause"); }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。