【无标题】

没有互联网编程的能力,运行效率高(实时性要求高)
靠近操作系统和硬件

应用层软件
应用层的程序员—计算机的组装者
系统层的程序员—计算机芯片生产者
python
程序:软件产品
调用现有的模块去组装

计算机高级语言:单词少,语法简单

go()
go()

a(){}
b(){}
main(){a()
a()}

Dev-Cpp_5.6.1_MinGW_4.8.1_Setup.exe
运行这个安装程序

2.
可拆解
模块化
每个模块:一段代码,有模块的名字
函数:若干个语句构成的一段代码,有名字

调用函数

程序由函数组成的函数是没有固定的顺序
执行入口是唯一—main函数(从main的第一行执行到main的最后一行)

a函数
b函数

函数名()

go(){
1*(2+3)每个语句以;结尾

#include 头文件
预编译语句

cpu Memory

30 50

2.1
标识符
在C语言中,标识符的命名规则
字母、数字和下画线 以字母下画线开头

C语言关键字不能用
合法
不合法

CPU只能处理内存中的数据
0 1
00 01 10 11

关键字
空间越长,可以存入的数的范围就越大
给变量赋值,有越界的可能的,

程序—编译器(翻译软件)—机器代码—运行器(软件)
test.c                      test.exe
test.cpp

整型 int 2字节 -32768–32767 short long 4字节
浮点型 float double

常量
三种数制
35 十进制
八进制,以0开头
十六进制,以0X0x开头
1.开发环境的准备:库、软件工具(编译器、运行器)
两种描述方法
0.2,77.2,0.618,1.23E-2浮点数小数点后面是不精确;两个浮点数是不能精确比相等的
字符型常量:必须写在单引号中,只能有一个字符,不能多也不能少char ASCII码
字符串常量

变量
代码
\n换行符
\t
\\
\‘
\’‘

格式化输出和输入
printf
scanf()
putchar() getchar()

算术


乘 
除 1.5/2 0.5
模运算 % 余数 1/2+1/3+1/4+1/5
两个类型相同的数位运算,结果也是相同类型
两个类型不相同的数做运算,系统首先自动转成相同类型,短类型转为长类型:自动类型转换
强制类型转换:当次临时转换,对象本来的类型并没有改变

总体
局部:分支

逻辑值在C中的表达:当运算结果为真的时候,值为1 非0

1 34
2 33
3 32
4 31

n%10 1-9
1+n%100 0-100
n%100 0-99

相同(相容)类型,在内存是一块连续的空间
数组名—》数组的首地址,常量
int array【10】
一次只能操作一个单元 可以批量赋初值
在定义的时候,要以最大的可能去开辟空间

按行存储

int arr【2】【3】;
arr:二维数组的首地址
arr【0】:一维数组的首地址
arr【i】:一维数组的首地址

字符串数组:比其他数组的特殊的地方:
1、可以用字符串赋值
2、scanf(“%s”,brr);遇到空格或者回车时就结束
     printf(“%s”,brr);
gets(brr);
puts(brr);

写在双引号中“hello”
字符串的本质是首地址,在常量中字符串的结尾一定有一个“\0”
int arr【0】;

相关的库函数:

1-给形参分配空间
2-实参-对应的赋值给形参
3-执行函数体
4-局部变量(包括形参)都释放掉,返回调用者

所有的局部变量只在所定义的函数中有效降低耦合度

全局变量:所有的函数的共享的空间

当参数传递字符串(一定以“\0”结尾),要传数组的首地址

当参数传数组的时候,要传:数组的首地址,数组的长度

面向对象:程序员自己定义数据类型

一、指针概念:数据类型,内存地址
二、两个*
int   a = 2;   定义一个整形变量p   
int*  p = &a;   定义一个整形指针变量p  。变量定义语句,*代表是指针类型

*p=200;      在非变量定义语句中,*是个操作符---取地址中的内容

三、
指针可以做加减法,int* p;    P+1---越过一个int,指向下一个整数

四、
数组名----指针常量 ,不可以被赋值
字符串----指针

函数之间传指针,----可以进入另外函数的空间进行操作

void go(int arr[ ],int len){

}

void go(int* arr,int len){

}

五、
int *temp;       temp 是随机地址
*temp = 2;     有隐含风险

char arr[10] = "hello";      
char *p = "hello";   有隐含风险

六、指针指向结构体
->

运行下面的程序,观察并分析自增运算符的用法

#include "stdio.h"
main(){
//	int a = 1;
//	float b = 2.5;
//	
//	printf("%d",a/(int)b);
	
//	int t1 = 1,t2 = 2;
//	printf("%f",(float)t1 / t2);
	
//	int a = 2,b;
//	b = a++;	//b=a,a++;
//	b = ++a;	//a++,b=a;
//	
//	a++b++

	int a,b;
	a = 2
	b = 2;
	
	
}

从键盘输入圆的半径,计算并输出其周长和面积。

//预编译
#include "stdio.h"
#define PI 3.14

main(){
	float r = 4.5;
	float area;
	area = 3.14 * r * r; 
	
	printf("%f",area);
	
}

从键盘输入一个自变量x,求分段函数y=f(x)的值,f(x)的表达式如下:

#include "stdio.h"
main(){
	int x,y;
	
	printf("input x:");
	scanf("%d",&x);
	
	if(x > 5){
		y = x + 3;
	}else{
		if(x >= 0 && x <= 5){
			y = 0;
		}else{
			y = 2 * x + 30;
		}
	}
	
	printf("%d",y);
	
}

逻辑运算符和逻辑表达式和的短路的用法演示

#include "stdio.h"
main(){
//	int a = 0.5;
//	
//	if(a = 2){
//		printf("true!");	//if(a == 2){
//	}else{
//		printf("false!");
//	}
//	
//	printf("%d",1<2 || 3>5);
//	
	int x = 3,y = 4;
	int result = x < y || y++;
	
	printf("%d",result);
	
	if(2<x<5){
		
	}
	if(){
		
	}
}

编一程序将成绩的百分制转换为等级制

#include "stdio.h"
main(){
	float score;
	
	printf("input score:");
	scanf("%f",&score);
	
	if(score <= 100 && score >= 90){
		printf("A");
	}else{
		if(score < 90 && score > 80){
			printf("B");
		}else{
			if(score < 80 && score > 70){
				printf("C");
			}else{
				if(score < 70 && score > 60{
					printf("D");
			}else{
					printf("E");
			    }
			}
		}
	}
}

从键盘输入一个年份值,判断是否是闰年

#include "stdio.h"
main(){
	int year;
	printf("input year:");
	scanf("%d",&year);
	
	if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0){
		printf("year %d is leap year.",year);
	}else{
		printf("year %d is not leap year");
	}
} 

从键盘输入三个整数,按由小到大的顺序输出

#include "stdio.h"
main(){
	int i1,i2,i3;
	
	printf("input 3 int:");
	scanf("%d%d%d",&i1,&i2,&i3);
	
	if(i1 > i2){
		if(i1 > i3){
			if(i2 > i3){
				printf("%d,%d,%d",i3,i2,i1);
			}else{
				printf("%d,%d,%d",i2,i3,i1);
			}
		}else{	//i1 > i2,i3 > i1
			printf("%d,%d,%d",i2,i1,i3);
		}
	}else{	//i1 < i2
		if(i2 < i3){
			printf("%d,%d,%d",i1,i2,i3);
		}else{
			if(i1 > i3){	//i1 < i2,i2 > i3
				printf("%d,%d,%d",i3,i1,i2);
			}else{
				printf("%d,%d,%d",i1,i3,i2);
			}
		}
	}
} 

从键盘输入三角形的三条边长,判断是否能构成三角形

#include "stdio.h"
#include "math.h"

main(){
	float a,b,c;
	float zc,mj,temp;
	
	printf("input a,b,c:");
	scanf("%f%f%f",&a,&b,&c);
	
	if(a+b>c && a+c>b && b+c>a){
		zc = a + b + c;
		temp = zc / 2;
		mj = sqrt(temp * (temp - a) * (temp - b) * (temp - c));
		printf("zc:%f,mj:%f",zc,mj);
		}else{
			printf("bu shi sjx!");
		}
}

iX2+iY2=16是平面的一个圆,编写一程序判断点(2,4)是在圆内,圆外还是圆上

#include "stdio.h"
main(){
	if(2*2+4*4 == 16){
		printf("shang!");
	}else{
		if(2*2+4*4 <16){
			printf("nei!");
		}else{
			prntf("wai!");
		}
	}
}

用switch语句解决问题3.8,将成绩的百分制转换为等级制

#include "stdio.h"
main(){
	folat score;
	
	printf("input score:");
	scanf("%f",&score);
	
	switch((int)score / 10){
		case 10;printf("A");break;
		case 9:printf("A");break;
		case 8:printf("B");break;
		case 7:printf("C");break;
		case 6:printf("D");break;
		default:printf("E");
	}
}

//76 / 10
//74

某快递公司运费收取标准为

#include "stdio.h"
main(){
	float weight,total;
	
	do{
		printf("input weight:");
		scanf("%f",%weight);
		if(weight <= 0 || weight >50){
			printf("wrong weight,input again:");
		}
	}while(weight <= 0 || weight > 50);

	
	switch((int)weight / 10){
		case 0:total = 3 * weight;break;
		case 1:total = 5 * 3 + (weight - 5) * 3.5;break;
		case 2:
		case 3:total = 5 * 3 + 5 * 3.5 + (weight - 5 - 5) * 4;break;
		case 4:
		case 5:total = 5 * 3 + 5 * 3.5 + 10 * 4 + (weight - 5 - 5 - 10) * 4.5;break;
		case 6:
		case 7:
		case 8:
		case 9:total = 5 * 3 + 5 * 3.5 + 10 * 4 + 10 * 4.5 + (weight - 5 - 5 - 10 - 10) * 5;break;
		case 10:total = 5 * 3 + 5 * 3.5 + 10 * 4 + 10 * 4.5 + 20 * 5;
	}
	printf("%0.2f",total);
}

假设星期一到星期五每工作一小时的工资是20元,星期六和星期日每工作一小时的工资是平时的3倍,其中工资的4.5%是税金。试编一程序从键盘输入星期序号和工作小时数,计算该日的工资及应交税金

#include "stdio.h"

main(){
	int week;
	float hour,salary,tax;
	
	printf("input week:");
	scanf("%d",&week);
	if(week < 1 || week > 7){	//week是错的 
		printf("week error.");
	}else{
		printf("input hour:");
		scanf("%f",&hour);
		if(hour < 0 || hour > 24){
			printf("hour error.");
		}else{
			switch(week){
				case 1:
				case 2:
				case 3:
				case 4:
				case 5:salary = 20 * hour;tax = salary * 0.045;break;
				case 6:
				case 7::salary = 20 * hour * 3;tax = salary * 0.045;break;
			}
			printf("salary=%0.2f,tax=%0.2f",salary,tax);
		}
	}
}

输入一个日期的年、月、日,计算并输出这天是该年的第几天

#include "stdio.h"

main(){
	int year,month,day,feb,total;
	int error = 0;
	int leap = 0;	//0:不是闰年,1:是闰年 
	printf("input year,month,day:");
	scanf("%d%d%d",&year,&month,&day);
	
	if(year%4==0 && year%100!=0 || year%400 == 0){
		leap = 1;
		feb = 29;
	}else{
		feb = 28;
	}
// 非法情况:小月不在[1,30],大月不在[1,31],2月闰年不在[1,29],2月非闰年不在[1,28] 
	if((month == 2 || month == 4 || month == 6 || month == 9 || month == 11)&&(day < 1 || day > 30))error = 1;
	if((month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 12)&&(day < 1 || day > 31))error = 1;
	if((month == 2)&&(leap == 1)&&(day < 1 || day > 29))error = 1;
	if((month == 2)&&(leap == 0)&&(day < 1 || day > 28))error = 1;
	
	if(error == 0){
		switch(month){
			case 1:total = day;break;
			case 2:total = 31 + day;break;
			case 3:total = 31 + feb + day;break;
			case 4:total = 31 + feb + 30 + day;break;
			case 5:
			case 6:
			case 7:
			case 8:
			case 9:
			case 10:
			case 11:
			case 12:total = 100; 
		}
	}else{
		printf("error.");
	}
}

1+2+3+...+100

//	1+2+3+...+100
#include "stdio.h"
main(){
	
	
//	while(i <= 100){
//		sum = sum + i;
//		i++;
//	}
	
//	do{
//		sum = sum + i;
//		i++;
//	}while(i <= 100);
//	
//	
//	printf("%d",sum);
	
	int sum = 0,i = 1;
	
	for(i = 1;i <= 10;i++){
		sum += i;
	}
	printf("%d",sum);
	
	
}

一个小学生刚开始学习乘法,但总记不住九九乘法表,请帮忙编写一个程序在计算机上打印出来

#include "stdio.h"
main(){
	int i,j;
	for(i = 1;i <= 9;i++){
		//打印第i行 
		for(j = 1;j <= i;j++){
			printf("%d*%d=%d",j,i,(j*i));
		}
		//换行 
		printf("\n");
	}
	
	
	
	
}
//1*1
//1*2 2*2
//1*3 2*3 3*3
//
//1*i 2*i 3*i......i*i

鸡兔同笼是我国古代著名趣题之一

#include "stdio.h"
main(){
	int i,j;
	for(i = 1;i <= 9;i++){
		//打印第i行 
		for(j = 1;j <= i;j++){
			printf("%d*%d=%d",j,i,(j*i));
		}
		//换行 
		printf("\n");
	}
	
	
	
	
}
//1*1
//1*2 2*2
//1*3 2*3 3*3
//
//1*i 2*i 3*i......i*i

从键盘输入整数n,计算并输出1!+2!+3!+...+n!的值

// 从键盘输入整数n,计算并输出1!+2!+3!+...+n!的值

#include "stdio.h"
main(){
	int sum = 0,jc = 1;
	int n,i,j;
	
	printf("input n:");
	scanf("%d",&n);
	
	for(i = 1;i <= n;i++){
		//求i! = (i-1)*i
//		jc = 1;
//		for(j = 1;j <= n;j++){
//			jc = jc * i;
//		}
		jc = jc * i;
		//累加
		sum = sum + jc; 
	}
	
	printf("%d",sum);
}

循环的嵌套层数
//1
//1*2
//1*2*3
//1*2*3*4
//1*2*3*4*5
//
//i 

求1-12+13-14+15的和

//求1-1/2+1/3-1/4+1/5的和
#include "stdio.h"
main(){
	float sum = 0;
	int i;
	
	for(i = 1;i <= 5;i++){
		sum += (float)1/i;
	}
	
	printf("%f",sum);
}

求1-12+13-14+15-16+17-18+19-110的和

//求1-1/2+1/3-1/4+1/5-1/6+1/7-1/8+1/9-1/10的和

#include "stdio.h"
//main(){
//	float sum = 0,sum2 = 0;
//	int i;
//	
//	for(i = 1;i <= 9;i+=2){
//		sum += (float)1 / i;
//	}
//	
//	for(i = 2;i <= 10;i+=2){
//		sum2 += (float)1 / i;
//	}
//	
//	printf("%f",sum - sum2);
//}


main(){
	float sum = 0;
	int fm,flag;
	
	for(fm = 1,flag = 1;fm <= 10;fm++,flag *= (-1)){
		sum += (float)1 / fm * flag;
	}
	
	printf("%f",sum);
	
} 

求出1+333+55555+7777777+......按照这个规律的前8项之和

//求出1+3*3*3+5*5*5*5*5+7*7*7*7*7*7*7+......按照这个规律的前8项之和
#include "stdio.h"
main(){
	int sum = 0,cj;
	int i,count,j;
	for(i = 1,count = 0;count < 8;i+=2,count++){
		//求i的i次方 
		cj = 1;
		for(j = 0;j < i;j++){
			cj = cj * i;
		}
		//累加 
		sum += cj;
	}
	
	printf("%d",sum);
}



从键盘输入一个整数n,判断该整数是否完全数。完全数是指其所有因数(包括1但不包括其本身)的和等于该数本身的数。例如:28 =1+2+4+7+14就是一个完全数。

//从键盘输入一个整数n,判断该整数是否完全数。完全数是指其所有因数(包括1但不包括其本身)的和等于该数本身的数。例如:28 =1+2+4+7+14就是一个完全数。

#include "stdio.h"
main(){
	int n,sum = 0,i;
	
	printf("input n:");
	scanf("%d",&n);
	
	for(i = 1;i < n;i++){
		if(n % i == 0){
			sum += i;
		}
	}
	
	if(sum == n){
		printf("yes!");
	}else{
		printf("no!");
	}
}

设有一长为3000米的绳子,每天减去一半,问需要几天时间,绳子的长度会短于5米。

//设有一长为3000米的绳子,每天减去一半,问需要几天时间,绳子的长度会短于5米。
#include "stdio.h"
main(){
	float len = 3000;
	int count = 0;
	
	while(len > 5){
		len = len / 2;
		count++;
	}
	
	printf("%d",count);
	
} 

编程输出如下规律的50行图案

//******		0
// ******		1
//  ******		2
//   ******
//i				i

#include "stdio.h"
main(){
	int i;
	int j;
	
	for(i = 0;i < 50;i++){
		//打印i行空格 
		for(j = 0;j < i;j++){
			printf(" ");
		}
		//打印6个* 
		for(j = 0;j < 6;j++){
			printf("*");
		}
		//换行 
		printf("\n");
	}
}

计算正整数1~100中的奇数之和及偶数之和

#include "stdio.h"
main(){
	int i;
	int sumJ = 0,sumO = 0;
	
	for(i = 1;i <= 100;i+=2){
		sumJ += i;
	}
	for(i = 2;i <= 100;i+=2){
		sumO += i;
	}
	
	printf("%d,%d",sumJ,sumO);
}

从5~100之间找出能被5或7整除的数

#include "stdio.h"
main(){
	int i;
	for(i = 5;i <= 100;i++){
		if(i % 5 == 0 || i % 7 == 0){
			printf("%d",i);
		}
	}
} 

编程统计全班学生的成绩

#include "stdio.h"
main(){
	float score1,score2,average;
	int countY = 0,countT = 0;
	char answer;
	
	do{
		printf("input 2 score:");
		scanf("%f%f",&score1,&score2);
		average = (score1 + score2) / 2;
		if(average >= 85){
			countY++;
		}else{
			if(average >= 60){
				countT++;
			}
		}
		printf("countinue?(y/n)");
		getchar();
		scanf("%c",&answer);
	}while(answer =='y');
	printf("%d,%d"countY,countT);
	
}

输入10个数,统计并输出正数、负数和0的个数

#include "stdio.h"
main(){
	int countZ = 0,countF  = 0;count0 = 0;
	int i,num;
	
	for(i = 0;i < 10;i++){
		printf("input int:");
		scanf("%d",&num);
		
		if(num > 0){
			countZ++;
		}else{
			if(num < 0){
				countF;
			}else{
				count0++;
			}
		}
	}
	
	printf("%d,%d,%d",countZ,countF,count0);
}

打印并输出所有水仙花数

#include "stdio.h"
main(){
	int i,ge,shi,bai;
	for(i = 100;i < 1000;i++){
		ge = i % 10;
		shi = i / 100 % 10;
		bai = i / 100;
		if(ge*ge*ge + shi*shi*shi + bai*bai*bai){
			printf("%d",i);
		}
	}
}

编写程序,计算满足13+23+33+...+n3的最大的n值

#include "stdio.h"
main(){
	int sum = 0;
	int i = 1;
	
	while(true){
		sum += i*i*i;
		if(sum >= 10){
			break;
		}
		i++;
	}
	
	printf("%d",i-1);
}


//1+8

系统随机产生一个1~100之间的数,猜数都从键盘上输入一个数,系统给出提示信息

#include "stdio.h"
#include "time.h"
#include "stdlib.h"
main(){
	int num,guess,count = 0;
	srand(time(0));
	num = 1 + rand() % 100;
	printf("%d",num);
	
	while(true){
		printf("guess a int:");
		scanf("%d",&guess);
		count++;
		
		if(guess == num){
			printf("yes!");
			break;
		}else{
			if(guess > num){
				printf("big!");
			}else{
				printf("small!");
			}
		}
		if(count == 3){
			printf("no chance!");
			break;
		}
	}
}

一个人很倒霉,不小心打碎了一位妇女的一篮子鸡蛋

#include "stdio.h"
main(){
	int i;
	for(i = 9;;i++){
		if(i % 2 == 1 && i % 3 == 2 && i % 5 == 4){
			printf("%0.2f",i * 0.4);
			break;
		}
	}
} 

从键盘输入一个整数,判断是否回文数

#include "stdio.h"
main(){
	int num,newNum = 0,temp,ge;
	printf("input int:");
	scanf("%d",&num);
	temp = num;
	
	while(true){
		ge = num % 10;
		newNum =newNum * 10 + ge;
		printf("%d\n",newNum);
		num = num / 10;
		if(num == 0){
			break;
		}
	}
	if(temp == newNum){
		printf("yes!");
	}else{
		printf("no!");
	}
}

//
//123 % 10			3
//123 / 10	12 % 10	2
//12 / 10	1 % 10	1
//1 / 10			0
//
//

计算并输出3到100(包括3和100)之间所有的素数之和

//计算并输出3到100(包括3和100)之间所有的素数之和

//
//i
//2 - i-1
#include "stdio.h"

main(){
	int i,sum = 0,j;
	for(i = 3;i <= 100;i++){
		//判断i是否素数,如果是就累加
		for(j = 2;j < i;j++){
			if(i % j == 0){
				break;
			}
		}
		if(j == i){		//i是素数 
			sum += i;
		}
	}
	printf("%d",sum);
	
}

i:9
j:2 3

i:7
j:2 3 4 5 6

从键盘输入10个参赛学生的成绩,求出分数最高的同学的序号及其成绩

#include "stdio.h"
#define SIZE 3

main(){
	float fScore[SIZE],fMax = 0;
	int i,iMax;
	
	for(i = 0;i < SIZE;i++){
		printf("input score no.%d:",(i+1));
		scanf("%f",&fScore[i]);
		if(fScore[i] > fMax){
			fMax = fScore[i];
			iMax = i;
		}
	}
	
	printf("max score:%0.1f,count:%d",fMax,(iMax+1));
	
}

求出S的值

#include "stdio.h"
main(){
	int fm = 0,jc = 1;
	int i,flag = 1;
	float sum = 0;
	
	for(i = 1;i <= 10;i++){
		jc = jc * i;
		fm = fm + jc;
		sum += (float)1 / fm * flag;
		flag *= (-1); 
	}
	
	printf("%f",sum);
}

//
//1
//1*2
//1*2*3
//
//1*2*...*(i-1)*i
//
//
//
//
//
//fm:
//1		1!
//2		1!+2!
//3		1!+2!+3!
//
//
//i		1!+2!+3!+...+(i-1)!+i!
//	
//	
//	
// S=1/1!-1/(1!+2!)+1/(1!+2!+3!)-......-1/(1!+2!+3!+...+10!)
	

打印20行

#include "stdio.h"

main(){
	int i,j;
	int space,star;
	
	for(i = 0,space = 19,star = 3;i < 20;i++,space--,star += 2){
		//打印space个空格
		for(j = 0;j < space;j++){
			printf(" ");
		}
		//打印star个*
		for(j = 0;j < star;j++){
			printf("*");
		}
		//换行
		printf("\n");
	}
}

将问题5.1中的10个学生的竞赛成绩从键盘输入,计算出平均分,将平均分输出到屏幕上

#include "stdio.h"
#define SIZE 3

main(){
	float fScore[SIZE],fSum = 0,fAverage;
	int i;
	
	for(i = 0;i < SIZE;i++){
		printf("input no.%d:",(i+1));
		scanf("%f",&fScore[i]);
		fSum += fScore[i];
	}
	
	fAverage = fSum / SIZE;
	
	printf("average of score:%0.1f",fAverage);
	
}

打印从0~255之间的所有ASCII码字符

#include "stdio.h"
main(){
	int i;
	for(i = 0;i < 256;i++){
		printf("%c",i);
	}
}

用初始化的方法,把某学习小组10名学生“C语言程序设计”课程的考试成绩存储在数组中,再从键盘输入一个考分,查找该数是否在数组中,如果在,则输出它是第几名学生的成绩

#include "stdio.h"
#define SIZE 10

main(){
	int arr[SIZE] = {10,20,30,40,55,60,70,80,90,99};
	int iToSearch,i;
	int found = 0; //0:没找到,1:找到了 
	
	printf("input int to search:");
	scanf("%d",&iToSearch);
	
	for(i = 0;i < SIZE;i++){
		if(iToSearch == arr[i]){
			printf("%d",i);
			found =1;
			break;
		}
	}
	
	if(found == 0){
		printf("not exist!");
	}
}

用赋初值的方法创建整形数组,并键盘输入要删除元素的下标,删除此单元,然后输出删除之后数组中所有有效单元的值

#include "stdio.h"
#define SIZE 10

main(){
	int arr[SIZE] = {10,20,30,40,55,60,70,80,90,99};
	int len = SIZE;//实际有效长度
	int iToSearch = 0,i; 
	//删除下标为iToSearch的单元
	
	for(i = iToSearch+1;i < len;i++){
		arr[i-1] = arr[i];
	}
	
	len--;
	
	for(i = 0;i < len;i++){
		printf("%d ",arr[i]);
	}
	
	
	
}

创建长度为10的整形数组,键盘输入数组9个元素,并键盘输入要插入的值和要插入的下标位置,编程完成插入此元素,然后输出插入

#include "stdio.h"
#define SIZE 10

main(){
	int arr[SIZE] = {10,20,30,40,50,60,70,80,90};
	int len = 9;//实际有效长度
	int i;
	
	int iIndexToSearch = 3;
	int iValueToSearch = 1000;
	
	for(i = len-1;i >= iIndexToSearch;i--){
		arr[i+1] = arr[i];
	}
	
	arr[iIndexToSearch] = iValueToSearch;
	len++;
	
	for(i = 0;i < len;i++){
		printf("%d ",arr[i]);
	}
	
}

两位同学在课外活动中进行成语接龙游戏,请将两个任意输入的习语

#include "stdio.h"
main(){
	char str1[80],str2[50];
	int i,j;
	
	printf("input string1:");
	scanf("%s",str1);
	printf("input string2:");
	scanf("%s",str2);
	
	//找到str1结尾'\0'的下标
	for(i = 0;;i++){
		if(str1[i] == '\0'){
			break;
		}
	}
	//'\0'的下标是i
	for(j = 0;;j++,i++){
		if(str2[j] == '\0'){
			break;
		}else{
			str1[i] = str2[j];
		}
	}
	//在str1结尾加‘\0’
	str1[i] = '\0';
	
	printf("%s",str1); 
	
}

新手入校参加军训,12名同学站成了3行4列,试编程序帮助教官从键盘输出12名同学的身高,并且求出其中个子最高的同学的身高

#include "stdio.h"
main(){
	int arr[3][4];
	int i,j,max;
	printf("input 12 int");
	for(i = 0; i < 3;i++){
		for(j = 0;j < 4;j++){
			scanf("%d",&arr[i][j]);
		}
	}
	
	max = arr[0][0];
	for(i = 0;i < 3;i++){
		for(j = 0;j < 4;j++){
			if(arr[i][j] > max){
				max = arr[i][j];
			}
		}
	}
	printf("max:%d",max);
}

软件系要选拔创新小组的成员,有N名同学参加考试,请你帮助老师将成绩输入计算机,从低分到高分进行冒泡排序并输出排序后的结果

#include "stdio.h"
#define N 6
main(){
	int arr[] = {7,1,2,5,9,3};
	int tang,i,temp;
	
	for(tang = 0;tang < N-1;tang++){
		for(i = 0;i < N-1 - tang;i++){
			if(arr[i] > arr[i+1]){
				temp = arr[i];
				arr[i] = arr[i+1];
				arr[i+1] = temp;
			}
		}
	}
	
	for(i = 0;i < N;i++){
		printf("%d ",arr[i]);
	}	
}

从键盘输入5个字符串,将其中最大的字符串打印出来

#include "stdio.h"
#include "string.h"

#define N 3
main(){
	char arr[N][11],maxString[11];
	int i;
	
	printf("input string:");
	for(i = 0;i < N;i++){
		gets(arr[i]);
	}
	
	strcmp(maxString , arr[0]);
	for(i = 1;i < N;i++){
		if(strcmp(arr[i],maxString) > 0){
			strcpy(maxString,arr[i]);
		}
	}
	
	puts(maxString);
	
}

用一维数组计算Fibonacci数列的前20项

#include "stdio.h"
main(){
	int arr[20] = {1,1};
	int i;
	for(i = 2;i < 20;i++){
		arr[i] = arr[i -1] + arr[i - 2];
	}
	for(i = 0; i < 20;i++){
			printf("%d ",arr[i]);
	}
}

将一个数组中的元素进行逆序存放

#include "stdio.h"
main(){
	int arr[] ] {1,2,3,4,5};
	int len = 5;
	int i,temp
	
	for(i = 0;i < len/2;i++){
		//i~(len-1-i)
		temp = arr[i];
		arr[i] = arr[len - 1 - i];
		arr[len - 1 - i] = temp;
	}
	
	for(i = 0;i <len;i++){
		printf("%d",arr[i]);
	}
	
}
//
//i:0 1 2 3 4
//len:5
//
//0~4
//1~3
//
//i~(len-1-i)
//
//i:0~len/2-1

在一个升序数组中插入,使数组仍然保持升序排列

#include "stdio.h"
main(){
	int arr[10] = {1,3,5,7,9};
	int len = 5;
	int iToInsert = -1;
	int i;
	
	for(i = len-1;i >= 0;i--){
		if(iToInsert < arr[i]){
			arr[i+1] = arr[i];
		}else{
			arr[i+1] = iToInsert;
			break;
		}
	}
	if(i < 0){
		arr[i+1] = iToInsert;
	}
	len++;
	
	for(i = 0;i < len;i++){
		printf("%d",arr[i]);
	}
}

合并两个降序数组,使合并后的数组仍然保持降序排列

#include "stdio.h"
main(){
	int arr[10] = {7,5,3};
	int brr[10] = {10,8,5,2,1};
	int crr[20];
	
	int len1 = 3,len2 = 5;
	int i = 0,j = 0,t = 0;
	
	while(i < len1 && j < len2){
		if(arr[i] > brr[j]){
			crr[t++] = arr[a++];
		}else{
			crr[t++] = crr[b++];
		}
	}
	
	if(i == len1){ //arr结束 
		while(j < len2){
			crr[t++] = brr[j++];
		}
	}
	if(j == len2){
		while(i < len1){
			crr[t++] = arr[i++];
		}
	}
	
	for(i = 0;i < len1+len2;i++){
		printf("%d",crr[i]);
	}
}

从键盘输入一篇英文学术文章的标题,要求不多于40个字符,分别统计求出其中大写字母、小写字母、数字和其他字符的个数

#include "stdio.h"
main(){
	char arr[] = "12 #$ AB!";
	int dx = 0,xx = 0,sz = 0,qt = 0;
	int i = 0;
	
	while(arr[i] != '0'){
		if(arr[i >= 'A' && arr[i] <= 'Z']){
			dx++;
		}else{
			if(arr[i] >= 'a' && arr[i] <= 'z'){
				xx++;
			}else{
				if()arr[i] >= '1' && arr[i] <= '9'{
					sz++;
				}else{
					qt++;
				}
			}
		}
		i++;
	}
	printf("%d %d %d %d",dx,xx,sz,qt);
}

编写程序打印10行杨辉三角形

#include "stdio.h"
main(){
	int yang[10][10];
	int i,j,space;
	for(i = 0;i < 10;i++){
		yang[i][0] = 1;
		for(j = 1;j < i;j++){
			yang[i][j] = yang[i-1][j] + yang[i-1][j-1];
		}
		yang[i][j] = 1;
	}
	
	for(i = 0,space = 9;i < 10;i++,space--){
		for(j = 0;j < space;j++){
			printf(" ");
		}
		for(j = 0;j <= i;j++){
			printf("%3d".yang[i][j]);
		}
		printf("\n");
	}
	
}

//1
//11
//121

编写一函数

double fnFun(double );

#include "stdio.h"

double fnFun(double x){
	if(x > 1){
		return x * x + 1;
	}else{
		if(x >= -1 && x <= 1){
			return x * x;
		}else{
			return x * x - 1;
		}
	}
}

main(){
	printf("%lf",fnFun(3));
}

用函数求1~n之和,要求函数原型为long fnSum(int n)

long funSum(int);
#include "stdio.h"

long fnSum(int n){
	int s = 0;
	for(int i = 1;i <= n;i++){
		s += i;
	}
	return s;
}

main(){
	long s = fnSum(100);
	printf("%ld",s);
}

编写一函数判别某一数是否为素数,若是,返回值为1;否则,返回值为0


int isPrime(int n);
#include "stdio.h"

int isPrime(int n){
	for(int i = 2;i < n;i++){
		if(n % i == 0){
			return 0;
		}
	}
	return 1;
}

main(){
	int t = 7;
	int result = isPrime(t);
	if(result == 1){
		printf("%d is prime.",t);
	}else{
		printf("%d is not prime.",t);
	}
}


//7
//2 3 4 5 6
//
//9
//2 3 4 5 6 7 8

编写一个函数,将两个字符串连接起来

#include "stdio.h"
void go(char s1[],char s2[]);
main(){
	char str1[80] = "hello";
	char str2[80] = "world";
	go(str1,str2);
	printf("%s",str1);
	
}

void go(char s1[],char s2[]){
	int i = 0,j = 0;
	while(s1[i]) i++;
	while(s2[j]) s1[i++] = s2[j++];
	s1[i] = '\0';
}

编写一个函数,使输入一个字符串按反序存放,在主函数中输入字符串,调用函数后输出

#include "stdio.h"
void go(char s1[],char s2[]);
main(){
	char str1[80] = "hello";
	char str2[80] = "world";
	go(str1,str2);
	printf("%s",str1);
	
}

void go(char s1[],char s2[]){
	int i = 0,j = 0;
	while(s1[i]) i++;
	while(s2[j]) s1[i++] = s2[j++];
	s1[i] = '\0';
}

用函数调用的方法求f(k,n)=1k+2k+。。。+nk,其中k和n从键盘输入

#include "stdio.h"
int go(int k,int n);

main(){
	int k,n,result;
	printf("input k:");
	scanf("%d",&k);
	printf("input n:");
	scanf("%d",&n);
	result = go(k,n);
	printf("%d",result);
	
}

int go(int k,int n){
	int s = 0,ji;
	for(int i = 1;i <= n;i++){
		//求i的k次方
		ji = 1;
		for(int j = 0;j < k;j++){
			ji *= i;
		}
		//累加
		s += ji;
	}
	return s;
}

从键盘输入一行字符(单词之间用空格分隔),统计输出其中有多少个单词

//从键盘输入一行字符(单词之间用空格分隔),统计输出其中有多少个单词

//I love	China.
//
//前一个字符是空格,后一个字符是非空格 ----一个单词的出现
#include "stdio.h"
int go(char []);

main(){
	char arr[80] = "	I love	the 	United  	States  		";
	printf("%d",go(arr));
}

int go(char arr[]){
	int i;
	char pre = ' ';
	int count = 0;
	
	for(i = 0;arr[i] != '\0';i++){
		if(pre == ' '&&arr[i] != ' '){
			count++;
		}
		pre = arr[i];
	}
	return count;
}

建立N名学生(人数自定)信息登记表,其中包括学会、姓名、性别及5门功课的成绩,设置文本菜单实现以下功能:

#include "stdio.h"
int input(struct student arr[]);
void showLowLarge(struct student arr[],int len);
void showAllLose(struct student arr[],int len);
void searchByld(struct student arr[],int len);
struct student{
	char id[4];
	char name[8];
	int gender;//1:male,0:female
	float score[5];
};

main(){
	int choice;
	int len = 0;//实际人数
	struct student arr[10];
	
	while(1){
		printf("*****************************");
		printf("1-input\n");
		printf("2-show lowest&largest score\n");
		printf("3-show count of all lost\n");
		printf("4-searh by id\n");
		printf("5-exit");
		printf("*****************************");
		printf("input your choice:");
		scanf("%d",&choice);
		
		switch(choice){
			case 1:len = input(arr);break;
			case 2:showLowLarge(arr,len);break;
			case 3:showAllLose(arr,len);break;
			case 4:searchByld(arr,len);break;
			case 5:printf("byebye!");break;
			default:printf("choice must between 1-5.");
		}
		if(choice == 5)break;
	}
}

int input(struct student arr[]){//返回实际学生的个数 
	int i = 0,answer;
	while(1){
		printf("input no.%d student information:\n",i+1);
		printf("input id:");
		scanf("%s",arr[i].id);
		printf("input name:");
		scanf("%s",arr[i].name);
		printf("input fender:(1:male,0:female)");
		scanf("%d",&arr[i].gender);
		printf("input 5 score");
		for(int j = 0;j < 5;j++){
			scanf("%f",&arr[i].score[j]);
		}
		i++;
		printf("continue?(1--yes,0--no)");
		scanf("%d",&answer);
		if(answer == 0)break;
	}
	return i;
}

void showLowLarge(struct student arr[],int len){
	float lowest,largest;
	int i,j;
	for(int i = 0;i < len;i++){
		lowest = arr[i].score[0];
		largest = arr[i].score[0];
		for(j = 1;j < 5;j++){
			if(arr[i].score[j] < lowest){
				lowest = arr[i].score[j];
			}else
			if(arr[i].score[j] > largest){
				largest = arr[i].score[j];
			}
		}
		printf("no.%d student:lowest--%f,largest--%f\n",i+1,lowest,largest);
	}
}

void showAllLose(struct student arr[],int len){
	int i,j;
	int allLose;//1:全不及格,0:有及格的
	printf("all lose:\n");
	for(i = 0;i < len;i++){
		allLose = 1;
		for(j = 0;j < 5;j++){
			if(arr[i].score[j] >= 60){
				allLose = 0;
				break;
			}
		}
		if(allLose == 1){
			printf("%s",arr[i].name);
		}
	}
}


void searchByld(struct student arr[],int len){
	int i,j,found = 0;//0:没找到 
	char id[4];
	printf("input id to search:");
	scanf("%s",id);
	
	for(i = 0;i < len;i++){
		if(strcmp(arr[i].id,id) == 0){
			printf("id:%s,name:%s",arr[i].id,arr[i].name);
			if(arr[i].gender == 1){
				printf("male");
			}else{
				printf("female");
			}
			printf("score:");
			for(j = 0;j < 5;j++){
				printf("%f",arr[i].score[j]);
			}
			found = 1;
			break;
		}
	}
	if(found == 0){
		printf("not found!");
	}
}


















结构体

struct student{
	char id[4];
	char name[8];
	int age;
};

int a = 2;

struct student t = {"1000","lily",20};
t.age = 21;
printf("%s",t.name);
scanf("%d",&t.age);
scanf("%c",t.name);


int arr[10] = {1,2,3};
for(int i = 0;i < 3;i++){
	printf("%d",arr[i]);
}


struct student brr[10] = {{"1000","lily",19},{"2000","peter",20}};
for(int i = 0;i < 2;i++){
	printf("%s",brr[i].name);
}

void go(int a,int b){
	return (a + b) / 2;
}

int come(struct student t1,struct student t2){
	return (t1.age + t2.age) / 2;
}

struct student getOlder(struct student t1,struct student t2){
	if(t1.age > t2.age){
		return t1;
	}else{
		return t2;
	}
}

int arr[10] = {1,2,3};
int result = (arr,3);



int max(int arr[],int len){
	int t = arr[0];
	for(int i = 1;i > len - 1;i++){
		if(arr[i] > t){
			t = arr[i];
		}
	}
	return t;
}


struct student brr[10] = {{"1000","lily",19},{"2000","peter",20}};
struct student max = oldest(brr,2);



struct student oldest(struct student arr[],int len){
	struct student t = arr[0];
	for(int i = 1;int < len - 1;i++){
		if(arr[i].age > t){
			t = arr[i];
		}
	}
	return t;
	
}



















定义一个字符指针变量,输出一串字符,统计字符串的长度

#include "stdio.h"
main(){
	int count = 0;
	
	char arr[10];	//开辟实际的字符串空间 
	char *pstr = arr;
	printf("input string:");
	
	gets(pstr);
	
	while(*pstr != '\0'){
		count++;
		pstr++;
	}
	
	printf("%d",count);
}

写出一个通用函数,该函数从一个一维整型数组中寻找一个指定的数,若找到,返回该数在数组中的下标值;否则返回-1

#include "stdio.h"
int search(int *p,int len,int iToSearch);
main(){
	int arr[10] = {1,2,3,4,5};
	int iToSearch = 30;
	int result;
	
	result = search(arr,5,iToSearch);
	if(result != -1){
		printf("%d",result);
	}else{
		printf("not found!");
	}
	
	
}

int search(int *p,int len,int iToSearch){
	int i;
	for(i = 0;i < len;i++,p++){
		if(*p == iToSearch){
			return i;
		}
	}
	return -1;
}

写出一通用函数,该函数从一字符串指针数组中寻找指定的字符串,若找到,返回1;若找不到,返回0

#include "stdio.h"
#include "string.h"

int search(char* *p,int len,char* cToSearch);
main(){
	char* arr[10] = {"hello","world","gupt"};
	char t[10] = "hello";
	int result = search(arr,3,t);
	if(result == 1){
		printf("found!");
	}else{
		printf("not found!");
	}
}

int search(char* *p,int len,char* cToSearch){
	for(int i = 0;i < len;i++){
		if(strcmp (*p,cToSearch)) == 0{
			return 1;
		}
	}
	return 0;
}

用指向数组的指针变量作为函数参数,编写一个输出数组所有元素的函数fnData_put()

#include "stdio.h"
void reverse(int *p,int len);
main(){
	int arr[10] = {1,2,3,5,6};
	int *p = arr;
	reverse(arr,5);
	for(int i = 0;i < 5;i++,p++){
		printf("%d",*p);
	}
	
}

void reverse(int *p,int len){
	int i;
	for(i = 0;i < len;i++,p++){
		*p = 0;
	}
}

定义含有6个元素的数组,然后用4种访问方式输出数组

#include "stdio.h"

main(){
	int arr[5] = {10,20,30,40,50};
	int i;
	
//
//	int* p = arr;
//	for(i = 0;i < 5;i++,p++){
//		printf("%d ",*p);
//	}
	
	int* p = arr;	//arr指针常量,p是指针变量 
	for(i = 0;i < 5;i++){
		printf("%d ",*p++);
	}
	
	int* p = arr;
	for(i = 0;i < 5;i++){
		printf("%d ",*(p+i));
	}
	
	int* p = arr;
	for(i = 0;i < 5;i++){
		printf("%d ",p[i]);
	}
	
	for(i = 0;i < 5;i++){
		printf("%d ",*(arr+i));
	}
	
	arr++;
	
//	for(i = 0;i < 5;i++){
//		printf("%d ",*arr++));	//错误的,arr作为数组名,是常量,不能被赋值 
//	}
}

输出变量的值和地址,观察输出方式与输出结果

#include "stdio.h"
main(){
	int a = 2;
	int* p = &a;
	
	*p = 200;
	printf("%d",a);
}

用指针变量作为函数参数,编写函数fnSwap()实现两变量的交换,并在主程序中调用该函数,输出结果进行分析讨论

#include "stdio.h"
void jh(int* t1,int* t2);

main(){
	int a = 20,b = 30;
	
	jh(&a,&b);
	
	printf("a = %d,b = %d",a,b);
	
}

void jh2(int* t1,int* t2){
	int* temp;	//temp没有赋值,是一个随机地址,*temp是一个随机空间 
	
	*temp = *t1;
	*t1 = *t2;
	*t2 = *temp;
}


void jh(int* t1,int* t2){
	int temp;
	
	temp = *t1;
	*t1 = *t2;
	*t2 = temp;
}

//要使用真正属于你的空间 


  • 17
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值