1 / 47
文档名称:

C语言基础.docx

格式:docx   大小:61KB   页数:47
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

C语言基础.docx

上传人:sxlw2017 2018/3/22 文件大小:61 KB

下载得到文件列表

C语言基础.docx

文档介绍

文档介绍:第一部分:枚举
在给定的范围内逐个检查是否符合条件。
例题zstu 3831
Description
输出所有形如aabb的四位完全平方数(即前2位数字相等,后2位数字相等,且是另外一个数的平方)
Input
没有输入
Output
按照从小到大输出4位完全平方数
枚举也是需要方法的,虽然可以从1000开始到9999逐个检查,但是这样效率不高,注意到四位数中只有两种数字,所以只需定义i,j两个变量即可。
代码:
//zstu 3831
#include <>
#include <>
int main(){
int judge(int n);//定义判断n是否是完全平方数的函数
int i,j,first=0;//定义 first是为了不多输出空格,新OJ上这个很重要,在这道题上没关系,答案就一个
for(i=1;i<=9;i++)
for(j=0;j<=9;j++){
int t=i*1100+j*11;//t就是符合第一个条件的数
if(judge(t)==1){
if(first!=0)printf(" ");
printf("%d\n",t);
first++;
}
}
return 0;
}
int judge(int n){
int i=(int)sqrt(n);//(int)表示强制转换数据类型,在这里是舍去小数部分
if(i*i==n)return 1;
return 0;
}
例2 zstu 4006
Description
求含有数字a且不能被a整除的4位整数的个数,并求这些整数的和
Input
多组测试数据,先输入整数T表示组数
然后每组输入1个整数a(1<=a<=9)
Output
对于每组测试数据输出一行,每行2个数分别是个数与和
Sample Input
1
3
Sample Output
思路类似上一题,但是稍麻烦点。这题应该需要从1000到9999进行查找,因为虽然有一个a了,但是含有几个a不确定,分开讨论更麻烦。
代码:
#include <>
int main(){
int judge(int a,int n);//定义判断函数,判断a是否是n中的一个数
int T,a,i;
scanf("%d",&T);//测试组数T
while(T--) {
int sum=0,count=0;//初始化个数与和为0,避免累加上组的结果
scanf("%d",&a);
for(i=1000;i<=9999;i++){
if(judge(a,i)==1&&i%a!=0){//满足两个条件
count++;
sum+=i;
}
}
printf("%d %d\n",count,sum);
}
return 0;
}
int judge(int a,int n){
for(;n!=0;n/=10)//每次取n的个位数,之后将n除以10,即向右移一位
if(n%10==a)return 1;//函数在运行return语句之后就会结束,即使之后还有语句也不会执行
return 0;
}
练习zstu 3512 3572 2429
第二部分数组(int,float,double等数字类的,char之后再说)
数组的操作一般分为排序,查找,删除。下面各取一道例题。
例1 排序
zstu 3540
Description
输入一个正整数N和N个整数,将它们按从大到小的顺序进行排序后输出。
Input
多组测试数据,每组输入一个正整数N(1≤N≤100)和N个整数,用空格分隔。
Output
将这N个数按从大到小的顺序重新输出。
Sample Input
10 -4 5 12 88 23 -9 2 0 8 10
5 12 3 4 9 -2
Sample Output
88 23 12 10 8 5 2 0 -4 -9
12 9 4 3 -2
下面给出两种方法
方法1:自定义函数
//zstu 3540
#include <>
int main(){
void dsort(int* a,int n);//定义一个dsort函数,用于排序,参数为指向int型数据的指针和数组的大小(元素个数)
int n,a[101],i;
while(~scanf("%d",&n)){//可以写scanf()!=EOF, 这是另一种写法
for(i=0;i<n;i++)
scanf("%d",&