做编程题要能脱离书本,减少看提示,看了提示就更要思考透彻,让自己慢慢脱离书本敲代码。
eg1输入十个不相同的整数并存在数组,找出最大元素并删除
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
void main()
{
int num[26], i; char c;
for (i = 0; i < 26; i++) num[i] = 0;
while ((c = getchar()) != '#')
if (isupper(c)) num[c - 65] += 1;
for (i = 0; i < 26; i++)
if (num[i])
printf("%c:%d\n", i + 65, num[i]);
system("pause");
}
eg2从键盘输入若干个整数并求出最大值
#include <stdio.h>
void main()
{
int i;
int s[10], max;
int Findmax(int x[], int n);/* Findmax()函数的申明*/
printf("Input 10 number : \n");
for (i = 0; i <= 9; i++)
scanf_s("%d", &s[i]);/* 输入10 个数据到s 数组中*/
max = Findmax(s, 10);/* 调用"" Findmax 函数*/
for (i = 0; i < 10; i++)
printf("%4d", s[i]);
printf("\nthe max is %d ", max);
}
int Findmax(int x[], int n)
{
int max, i;
max = x[0];
for (i = 1; i < n; i++)
if (max < x[i])
max = x[i];
return max;
}
回顾到数组的输入方法,
从两个数比较大小的方法结合数组调用函数实现多个数据比较。
函数的申明比函数的定义中的首行多一个分号,
eg3调试程序,说出其功能
#include<stdio.h>
void main()
{
int m, k;
void dtoo(int n, int r);
printf("Please input the decimal number:");
scanf_s("%d", &m);
printf("\nPlease input a number in(2,8,16):");
scanf_s("%d", &k);
dtoo(m,k);
}
void dtoo(int n, int r)
{
if (n >= r) dtoo(n / r, r);
printf("%d", n%r);
}
功能:十进制转化为二,八,十六进制
调用两次dtoo函数
第一次dtoo(33 8)33>8
变为dtoo(33/8 8)int型即 dtoo(4 8)
第二次自己调用自己 4<8
printf4%8即 4 返回到第一次调用函数的位置
printf33%8即 1
eg4有一个一维数组score,内放10个学生成绩,求平均成绩
#include<stdlib.h>
#include <stdio.h>
int main()
{
float average(float array[10]); // 函数声明
float score[10], aver;
int i;
printf("input 10 scores:\n");
for (i = 0; i < 10; i++)
scanf_s("%f", &score[i]);
printf("\n");
aver = average(score); // 调用average函数
printf("average score is %5.2f\n", aver);
return 0;
}
float average(float array[10]) // 定义average函数 声明形参数组大小但不起作用
{
int i;
float aver, sum = array[0];
for (i = 1; i < 10; i++)
sum = sum + array[i]; // 累加学生成绩
aver = sum / 10;
return(aver);
system("pause");
}
用数组名作为函数实参,形参。
在主函数和被调用函数时要分别定义数组,
实参形参类型一致,且形参可以不指定大小。
看不懂要多看,灵活的思考学会自我提问,看透例题。真正理解到意思,