C语言 第六章 数组
2020-05-22 本文已影响0人
小明同学机器人
[TOC]
第六章 数组
数组求斐波那契数列
#include<stdio.h>
#define P 20
int main()
{
int a[P]={1,1};
for(int i=2;i<P;i++)
{
a[i]=a[i-1]+a[i-2];
printf("%d\n",a[i]);
}
for(int i=0;i<P;i++)
{
printf("%d\n",a[i]);
}
}
二维数组定义初始化
#include<stdio.h>
int main()
{
int a=3, b=4;
int c[a][b]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
for(int i=0;i<a;i++)
{
for(int j=0;j<b;j++)
{
printf("%d\t",c[i][j]);
}
printf("\n");
}
}
二维数组初始化方式
#include<stdio.h>
int main(){
//定义一个二维数组
//初始化1
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
//输出二维数组的每一个元素
int i;//控制行,下标从0开始
int j;//控制列,下标从0开始
//遍历数组的每一个元素
for(i = 0;i<=2;i++){//行
for(j=0;j<=3;j++){//列
printf("%6d",a[i][j]);
}
printf("\n");
}
printf("-----------------\n");
//初始化2
int b[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};//二维数组
for(i = 0;i<=2;i++){//行
for(j=0;j<=3;j++){//列
printf("%6d",b[i][j]);
}
printf("\n");
}
//初始化3---可以对部分元素赋值,对于int类型,没有初始化的数据
//默认值为0
printf("-----------------\n");
int c[3][4]={{1,2},{3},{5}};
for(i = 0;i<=2;i++){//行
for(j=0;j<=3;j++){//列
printf("%6d",c[i][j]);
}
printf("\n");
}
printf("-----------------\n");
//初始化4
//对于二维数组,行值可以省略,列值不能省
int d[][4]={1,2,3,4,5,6,7,8,9,10,11,12};
//int d[3][]={1,2,3,4,5,6,7,8,9,10,11,12};错误!!!!!
for(i = 0;i<=2;i++){//行
for(j=0;j<=3;j++){//列
printf("%6d",d[i][j]);
}
printf("\n");
}
printf("-----------------\n");
////初始化4
int e[][4]={{1,2},{3},{7,8,9}};
for(i = 0;i<=2;i++){//行
for(j=0;j<=3;j++){//列
printf("%6d",e[i][j]);
}
printf("\n");
}
return 0;
}
例题
image-20200319144935788 答案C选c
image-20200319151131959 image-20200319161338406定义一个char[] =“hello”; 会在后面自己加一个\0,大小也为0
头文件库函数学习(重点)
#include<stdio.h>
#include<string.h>
int main() {
//1. 字符输入 输出
char a='A';
//a=getchar();
putchar(a);
printf("\n");
//常用字符串 操作函数
// char str[]="hello world";
// puts(str);
//2. gets(string)输入字符串 和打印字符串 puts(string)
char str1[]="等待输入,已经注释";
// gets(str1);
puts(str1);
//3. strcat(字符数组1,字符数组2) 字符数组拼接
char str2[]="hello",str3[]=" world";
strcat(str2,str3);
puts(str2);
//4. 字符串复制 strcpy(string,string1) string1 给string 复制
char str4[5],str5[]="aaaaa";
strcpy(str4,str5);
puts(str4);
//5. strcmp(string,string) 比较字符串大小 返回值0,相等 ;返回-1,str1<str2;
//返回值1 str1>str2 ; 这个比大小是遍历比较,遍历到同一个字符 比ascall大小
char str6[]="BbBA";
char str7[]="BbWC";
printf("\n%d",strcmp(str6,str7));
//6. 比较字符串实际长度 strlen(string)
//如下 ,字符串的数组的大小为6,因为多了一个\0,
//但是strlen(str8)是5,是字符串实际长度
char str8[]="12345";
printf("\nc长度%d",strlen(str8));
//7. 将字符串转换为小写 strlwr(string)
char str9[]="ABCDEF";
printf("\n%s",strlwr(str9));
//8. 将字符串转换为大写 strupr(string)
char str10[]="abcdef";
printf("\n%s",strupr(str10));
}
学生成绩
#include<stdio.h>
#define person 10
int main() {
printf("请输入十个学生成绩\n");
int grade[person];
int sum=0;
double ave=0;
for(int i=0; i<person; i++) {
scanf("%d",&grade[i]);
sum+=grade[i];
}
ave=((double)sum/person);
printf("输入完成");
int num=0;
for(int k=0; k<person; k++) {
if(grade[k]<ave) {
num++;
}
}
printf("\n学生平均成绩为%.1lf,有%d个学生平均成绩低于平均分",ave,num);
}
最大公约数 最小公倍数 (最小公倍数=a*b/最大公约数)自己写的
#include<stdio.h>
int main() {
int a,b;
printf("请输入两个整数\n");
scanf("%d%d",&a,&b);
int m=0,n=0;//m最大公约数 n 最小公倍数
//最大公约数
for(int i=(a<b?a:b); i>0; i--) { //从1到最小的数计算
if(a%i==0&&b%i==0) {
m=i;
break;
}
}
//最小公倍数
for(int i=(a>b?a:b); i<a*b; i++) {//从最大的数开始++ 除以a 和除以b 是否相等
if(i%a==0&&i%b==0) {
n=i;
break;
}
}
printf("最大公约数为%d,最小公倍数为%d",m,n);
return 0;
}