C语言基础

2019-07-13 18:44

第一部分:枚举

在给定的范围内逐个检查是否符合条件。

例题zstu 3831

Description

输出所有形如aabb的四位完全平方数(即前2位数字相等,后2位数字相等,且是另外一个数的平方)

Input

没有输入

Output

按照从小到大输出4位完全平方数

枚举也是需要方法的,虽然可以从1000开始到9999逐个检查,但是这样效率不高,注意到四位数中只有两种数字,所以只需定义i,j两个变量即可。

代码: //zstu 3831

#include #include int main(){ int judge(int n);//定义判断n是否是完全平方数的函数 inti,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){

} } return 0; }

int judge(int n){ }

if(first!=0)printf(\printf(\first++;

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(inta,int n);//定义判断函数,判断a是否是n中的一个数 intT,a,i;

scanf(\测试组数T while(T--) {

int sum=0,count=0;//初始化个数与和为0,避免累加上组的结果 scanf(\

for(i=1000;i<=9999;i++){

if(judge(a,i)==1&&i%a!=0){//满足两个条件 count++; sum+=i; } } printf(\ } return 0; }

int judge(inta,int n){ for(;n!=0;n/=10)//每次取n的个位数,之后将n除以10,即向右移一位 if(n==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型数据的指针和数组的大小(元素个数) intn,a[101],i; while(~scanf(\可以写scanf()!=EOF,这是另一种写法 for(i=0;i

void dsort(int *a,int n){//冒泡排序指针加上[k]可访问其本身地址之后的 k个元素 inti,j,t; for(i=0;i}方法二:利用C++库函数sort //zstu 3540

#include

#include //算法头文件

using namespace std;//使用std命名空间

boolcmp(inta,int b){//比较函数,如果不写的话,默认升序排序,并且调用函数的时候要这么写sort(a,a+n); return a>b;//这边的形态就是排完序之后前一个元素与后一个元素的大小关系 }

int main(){ intn,a[101],i; while(~scanf(\ for(i=0;i

例2,查找 Zstu 3883

Description

在给定的数组中查找一个数

Input

多组测试,每组第一行输入1个整数n(n<20),然后是n个整数 第二行输入1个整数m

Output

查找在第一行的n个整数中第一次出现数字m的下标位置并输出,如果没有找到则输出No

Sample Input

3 4 5 6 5

4 2 2 2 2


C语言基础.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:国际经济学试题及答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: