循环语句练习:
1)计算n的阶乘:
#include <stdio.h>
int main()
{
int i = 0;
int ret = 1;
printf("计算阶乘:>");
int n = 0;
scanf("%d", &n);
for(i = 1; i<=n; i++)
{
ret = ret * i;
}
printf("结果是:%d",ret);
return 0;
}
2)计算1!+2!+3!+…+10!:
#include <stdio.h>
int main()
{
int i = 0;
int sum = 0;
int n = 0;
int ret = 1;
for(i = 1; i<= 10; i++)
{
ret = 1;
for(n = 1; n <= i; n++)
{
ret = ret * n;
}
sum = sum + ret;
}
printf("%d\n",sum);
return 0 ;
}
第二种:
#include <stdio.h>
int main()
{
int i = 0;
int sum = 0;
int n = 0;
int ret = 1;
for(i = 1; i<= 10; i++)
{
ret = ret * i;
sum = sum + ret;
}
printf("%d\n",sum);
return 0 ;
}
3)在一个有序数组中查找具体的某个数字n:
#include <stdio.h>
int main()
{
int arr[] = {
1,2,3.4,5,6,7,8,9,10,11};
int left = 0;
int sz = sizeof(arr)/sizeof(arr[0]);
int right = sz-1;
int mid= (left + right)/2;
int k = 7;
while(left<=right)
{
if(arr[mid] >k)
{
right = mid - 1;
}
else if(arr[mid] <k)
{
left = mid + 1;
}
else
{
printf("找到了,下标是:%d\n",mid);
break;
}
}
if(left>right)
printf("找不到\n");
return 0 ;
}
运用了二分找查法,利用下标与数组中的元素关系,寻找中间值,从而找到目标数字。
4)编写代码,演示多个字符从两端移动,向中间汇聚 :
#include <string.h>
#include <stdio.h>
#include<Windows.h>
int main()
{
char arr1[] = "welcome to GPNU!" ;
char arr2[] = "################";
int left = 0;
int right = strlen(arr1)-1;
while(left<=right)
{
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf("%s\n",arr2);
Sleep(1000);
system("cls");
left++;
right--;
}
printf("%s\n",arr2);
return 0;
}
Sleep(1000); 睡眠函数,可以短暂停留。
system(“cls”); 清空屏幕
5)编写代码实现,模拟用户登录情景,并且只能登录三次 :
#include <string.h>
#include <stdio.h>
int main()
{
int i = 0;
char password[20] = {
};
for(i=0; i<3; i++)
{
printf("请输出密码:>");
scanf("%s",password);
if(strcmp(password,"123456") == 0)
{
printf("登录成功\n");
break;
}
else if(i<2)
{
printf("密码错误,请重新输入\n");
}
}
if(i==3)
printf("三次密码均错误,退出程序\n");
return 0;
}
c语言练习:
1、关于c语言关键字说法正确的是:(B)
A.关键字可以自己创建
B.关键字不可以自己创建
C.关键字可以做变量名
D.typedef不是关键字
2、下面不是关键字的是(C)
A.int
B.struct
C.define 预处理指令
D.continue
3、
int func(int a)
{
int b;
switch(a)
{
case 1: b= 30;
case 2: b= 20;
case 3: b= 16;
case 4: b= 0;
}
return b;
}
则func(1)=(D)
A.30
B.20
C.16
D.0
没有break语句,所以一直执行到结束。
写代码将三个数从大到小输出
#include <string.h>
#include <stdio.h>
int main()
{
int a= 0;
int b= 0;
int c= 0;
scanf("%d %d %d",&a,&b,&c);
if(a<b)
{
int tmp = a;
a=b;
b= tmp;
}
if(a<c)
{
int tmp = a;
a=c;
c= tmp;
}
if(c>b)
{
int tmp = b;
b=c;
c= tmp;
}
printf("%d %d %d",a,b,c);
return 0;
}
写代码输出1-100中3的倍数
#include <string.h>
#include <stdio.h>
int main()
{
int i = 0;
for(i=0; i<=100;i++)
{
if(i % 3==0)
{
printf("%d \n",i);
}
}
return 0;
}
给定两个数,求这两个数的最大公约数
#include <stdio.h>
int main()
{
int m =0;
int n =0;
scanf("%d%d",&m,&n);
int r = m % n;
while(r!=0)
{
m = n;
n = r;
r = m % n;
}
printf("%d",n);
return 0;
}
辗转相除法: m除以n,若剩有余数,余数赋值为n,原先n的值赋值给m,再继续相除,直到余数为0,此时n的值就是两个数的最大公约数。
打印1000年到2000年之间的闰年
判断闰年的方法是 1、能被4整除且不能被100整除。2、能被400整除 。
#include <stdio.h>
int main()
{
int year = 0;
for(year=1000; year<=2000;year++)
{
if(year %4 ==0 && year % 100 !=0 )
printf("%d ",year);
else if(year %400 ==0)
printf("%d ",year);
}
return 0;
}
打印100~200之间的素数
试除法:
#include <stdio.h>
int main()
{
int i= 0;
int count =0;
for(i=100; i<=200; i++)
{
int j= 0;
for(j=2; j<i; j++)
{
if(i%j == 0)
{
break;
}
}
if(j == i)
{
count++;
printf("%d ",i);
}
}
printf("\ncount=%d\n",count);
return 0;
}
当一个数不是素数时,这个数可以写成,i=a*b,且a\b<=开平方i.
4、
关于while(条件表达式),以下叙述正确的是(B)?(假设循环体里面没有break,continue,return,goto等等语句)
A.循环体的执行次数总是比条件表达式的执行次数多一次
B.条件表达式的执行次数总是比循环体的执行次数多一次
C.条件表达式的执行次数与循环体的执行次数一样
D.条件表达式的执行次数与循环体的执行次数无关
1-100之间有多少个数字9
#include <stdio.h>
int main()
{
int i =0;
int count = 0;
for(i=1; i<=100;i++)
{
if(i%10 == 9)
{
count++;
}
if(i/10 == 9)
{
count++;
}
}
printf("%d ",count);
return 0;
}
一共20个9。
分数求和
求解:1/1-1/2+1/3-1/4+1/5…+1/99-1/100;
#include <stdio.h>
int main()
{
int i =0;
double sum = 0.0;
int flag =1;
for(i=1; i<=100; i++)
{
sum += flag*1.0/i;
flag = -flag;
}
printf("%lf\n",sum);
return 0;
}
求十个负数的最大值
#include <stdio.h>
int main()
{
int i = 0;
int arr[] ={
-1,-2,-3,-4,-5,-6,-7,-8,-9,-10};
int max = arr[0];
int sz = sizeof(arr)/sizeof(arr[0]);
for(i=1; i<sz; i++)
{
if(arr[i]> max)
{
max = arr[i];
}
}
printf("max=%d\n",max);
}
打印九九乘法表
#include <stdio.h>
int main()
{
int i = 0;//打印九行
for(i= 1; i<= 9; i++)
{
int j = 1;//打印一行
for(j=1; j<=i; j++)
{
printf("%d*%d=%-2d ",i,j,i*j);//左对齐,打印数字时打印两位,数字不够两位就用空格填充
}
printf("\n");
}
return 0;
}
大部分代码都没有办法自己写出来,但是能够理解代码。所以需要反复看,将方法和算法记住。
转载:https://blog.csdn.net/xiaotangyu7dong/article/details/115388306