一.n!
#include <stdio.h>
int main(){
int i=0;
int n=0;
int ret=1;
printf("请输入所求哪个数的阶乘:");
scanf("%d",&n);
for(i=1;i<=n;i++){
ret=ret*i;
}
printf("所求%d的阶乘为%d\n",n,ret);
return 0;
}
二.求1!+2!+....+10!
#include <stdio.h>
int main(){
int i=0;
int n=10;
int ret=1;
int sum=0;
for(i=1;i<=n;i++){
ret=ret*i;
sum=sum+ret;
}
printf("所求的阶乘总和sum=%d",sum);
return 0;
}
三.二分法查找数组里面的所需要数的下标
#include <stdio.h>
#include <string.h>
int main(){
int arr[]={11,32,23,44,65,66,77,68,89};
int sz=sizeof(arr)/sizeof(arr[0]);
int left=0;
int right=sz-1;
int key =77
while(left<=right){
mid=(left+right)/2;
if(arr[mid]>key){
left=mid+1;
}else if(arr[mid<key]){
right=mid-1;
}else{
printf("找到了下标%d\n",mid);
break;
}
}
if(left>right){
printf("没找到\n");
}
return 0;
}
四.数组替代
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
int main(){
char arr1[]={"what is ur name ?"};
char arr2[]={"*****************"};
int left=0;
int right=sizeof(arr)/sizeof(arr[0])-2;
while(left<=right){
arr2[left]=arr1[left];
arr2[right]=arr1[right];
printf("%s\n"arr[2]);
Sleep(1000);
system("cls");//清空屏幕,这个是执行系统命令的一个函数
left++;
right--;
}
if(left>right){
printf("OVER\n");
}
return 0;
}
五.练习一个输入密码三次,超过就失败。
#include <stdio.h>
int main(){
int i=0;
char password[]={0};
for(i=0;i<3;i++){
printf("请输入密码:\n");
scanf("%d",password);
if(strcmp(password,"123456")==0){
printf("登录成功\n");
break;
}else{
printf("登录失败\n");
}
}
if(i==3){
printf("次数已经用完,请稍后再试\n");
}
return 0;
}
六.关键字
C语言的关键字是一组具有特殊含义的保留词,用于定义程序结构和控制流程。它们在C语言中有着特定的作用,不能用作变量名、函数名或用户自定义标识符。以下是一些主要的C语言关键字:
1. auto(自动变量)
2. break(跳出循环)
3. case(switch语句中的每个选项)
4. char(字符类型)
5. const(常量)
6. continue(跳过当前循环的剩余部分并开始下一轮)
7. default(switch语句中未指定case的默认行为)
8. do...while(条件先判断的循环)
9. double(双精度浮点数)
10. else(if语句的否定分支)...还有很多其他的关键字,如for, while, if, struct, enum, typedef, extern等。熟悉这些关键字有助于编写有效的C代码。
在 C 语言或类似的编程中,switch 语句主要用于根据表达式的值执行一系列相关的代码块,这些代码块被称为 case 块。switch 结构通常不直接支持 if 语句的嵌套,因为它的本质是匹配和跳转,而不是条件判断。
然而,如果你想模拟一种类似于 if-else 的控制结构,可以在 switch 后面加上一个 fallthrough 或者 continue 来间接达到类似的效果。例如:
switch(expression) { case value1: // 执行对应的代码 break; // 如果不需要继续下一个 case,则添加此行终止当前 case /* 在这里你可以选择: * 不加 break 并用 if 判断作为“默认”情况(但通常不是最佳实践) */ case value2: if (some_condition) { // 执行额外的逻辑 } else { // 继续执行下一条 case continue; } default: // 处理所有其他未匹配的情况 if (another_condition) { // ... } break; // 标准做法是在 default 块后结束 switch }
这样虽然没有完全像 if 语句那样灵活,但可以通过组合使用来完成类似的功能。不过,这种设计并不常见,因为它可能会降低代码的可读性和效率。通常,switch 用于明确的选择分支,而 if-else 更适合处理复杂的条件判断。
七.输入三个数,从大到小排
#include <stdio.h>
int main(){
int a,b,c=0;
please("请输入三个数:\n");
scanf("%d%d%d",&a,&b,&c);
if(a<c){
int temp=a;
a=c;
c=temp;
}
if(b<c){
int temp =b;
b=c;
c=temp;
}
if(a<b){
int temp =a;
a=b
b=temp;
}
printf("从大到小排序:\n"a,b,c);
return 0;
}
八.找到100以内,3的倍数的数
#include <stdio.h>
int main(){
int i=0;
for(i=1;i<100;i++){
if(i%3==0){
printf("%d ",i);
}
}
return 0;
}
九.辗转相除法计算最大公约数
#include <stdio.h>
int main(){
int m=0;
int n=0;
int r=0;
printf("请输入两个数:\n");
scanf("%d%d",&m,&n);
while(m%n){
r=m%n;
m=n;
n=r;
}
printf("最大公约数为:%d\n",r);
return 0;
}
十.计算1948---2024年的闰年
#include <stdio.h>
int main(){
int year=0;
int count=0;
for(year=1948;year<2024;i++){
if(year%4==0 && year%100!=0){
printf("%d ",year);
count++;
}else if(year%400==-0){
printf("%d ",year);
count++;
}
}
printf("总得闰年数为%d\n",count);
return 0;
}
十一.计算100到200的素数
#include <stdio.h>
int main(){
int i=0;
int j=0;
int count=0;
for(i=100;i<=200;i++){
for(j=2;j<i;j++){
if(i%j==0){
break;
}
}
if(j==i){
count++;
printf("素数为%d ",j);
}
}
printf("总的素数量为:%d",count);
return 0;
}
十二.优化计算100到200之间的素数
#include <stdio.h>
#include <math.h>
int main(){
int i=0;
int j=0;
int count=0;
for(i=100;i<=200;i++){
for(j>2;j<sqrt(i);j++){
if(i%j==0){
break;
}
}
if(i>sqrt(j)){
count++;
printf("%d ",i);
}
}
printf("\ncount=%d\n",count);
return 0;
}
十三.计算1-100之间位数上面有9的数字的给个数
#include <stdio.h>
int main(){
int i=0;
int count =0;
for(i=1;i<200;i++){
if(i%10==9){
count++;
}
if(i/10=9){
count++;
}
}
printf("总的含9的数字的个数为%d",count);
return 0;
}
十三.计算1/1-1/2+1/3-1/4+1/5-1/6+...+1/99-1/100的值
#include <stdio.h>
int main(){
int i = 0;
double j=1.0;
int flg=1;
double sum=0;
for(i=1;i<100;i++){
sum += flg*j/i;
flg = -flg;
}
printf("%lf ",sum);
return 0;
}
十四.找到数组中随机数字的最大数字
#include <stdio.h>
int main(){
int arr[]={11,17,15,77,88,99,33,66,9,19};
int i=0;
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("数组中最大数是%d ",max);
return 0;
}
十五.乘法口诀表
#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=%d ",i,j,i*j);
}
}
pintf("\n");
return 0;
}
十六.猜数字游戏
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void menu(){
printf("************************\n");
printf("******GO:1****close:0***\n");
printf("************************\n");
}
void game(){
int ret=0;
int guese=0;
ret=rand()%100+1;
printf("请输入1-100的数字:\n");
scanf("%d",&guess);
while(1){
if(guess>ret){
printf("猜大了\n");
}
else if(guess<ret){
printf("猜小了\n");
}
else{
printf("猜对了");
break;
}
}
}
int main(){
menu();
srand((unsigned int)time(NULL));
int input=0;
do{
printf("请选择是否进入游戏:\n");
scanf("%d",&input);
switch(input){
case 1:
printf("游戏开始\n");
game();
break;
case 0:
printf("游戏结束\n");
break;
defulat:
printf("选择错误,重新选择");
break;
}
}while(intput)
return 0;
}
十七.用goto写一个关机程序
#include<stdio.h>
int main(){
char arr[20]={};
system("shutdown -s -t 60");
again:
printf("请输入我是猪,否则60秒后会自动关机\n");
scanf("%s",arr);
if(strcmp(arr,"我是猪)==0){
system("shutdown -a");
}else{
goto again;
}
return 0;
}
十八.使用strcpy函数
#include <stdio.h>
int main(){
char arr1[]={"what is ur name?"};
char arr2[]={"hello world"};
strcpy(arr2,arr1);
printf("%s",arr2);
return 0;
}
十九.memset函数
#include <stdio.h>
int main(){
char arr[]={"hello world"};
memset(arr,'*',5);
printf("%s",arr);
return 0;
}
二十.指针和自定义函数来进行函数交换
#include <stdio.h>
void swap(int* x,int *y){
int temp=0;
temp=*x;
*x=*y;
*y=temp;
}
int main(){
int a=66;
int b=77;
swap(&a,&b);
printf("交换后的a值为%d,b值为%d,a,b);
return 0;
}
二十一.指针和自定义函数来进行素数的查找
#include <stdio.h>
#include <math.h>
void is_sushu(int i){
int j=0;
for(j=2;j<=sqrt(i);j++){
if(i%j==0){
return 0;
}
}
return 1;
}
int main(){
int i=0;
for(i=1;i<100;i++){
if(is_sushu(i)==1)
printf("%d ",i);
}
return 0;
}
二十一.sprintf函数的调用
#include<stdio.h>
int main(){
char buffer[128]={0};
int n,a=5,b=6;
n=sprintf(buffer,"%d*%d=%d",a,b,a*b);//如果成功,则返回写入的字符总数。
printf("[%s]is string char of %d",buffer,n);
return 0;
}
二十二.fwrite和fopen函数的使用
#include <stdio.h>
int main(){
FILE *op;
char buffer[20]={"what is ur name?"};
op=fopen("project.bin","wr");
fwrite(buffer,sizeof(char),sizeof(buffer),op);
fclose(op);
return 0;
}