347 lines
8.5 KiB
Markdown
347 lines
8.5 KiB
Markdown
### C语言-1
|
||
|
||
```c
|
||
/*------------------------------------------------------------------------------
|
||
【程序设计】输入一个1000以内的三位数,找出小于这个三位数且个位数字与十位数字之和
|
||
除以10所得的余数等于百位数字的数,并输出满足条件的数字之和。
|
||
------------------------------------------------------------------------
|
||
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,否则不得分。
|
||
仅在Program-End之间填入若干语句。不要删除标志否则不得分。
|
||
------------------------------------------------------------------------------*/
|
||
#include<stdio.h>
|
||
|
||
int main()
|
||
{
|
||
int a,b,c,d,i,j,sum=0;
|
||
scanf("%d",&j);
|
||
/**********Program**********/
|
||
for(i=100;i<j;i++){
|
||
a = i%10;//个位
|
||
b = i%100/10;//十位
|
||
c = i/100;//百位
|
||
d = (a+b)%10;//个位+十位 取模
|
||
if(c == d){
|
||
sum += i;
|
||
}
|
||
}
|
||
|
||
|
||
/********** End **********/
|
||
printf("%d\n",sum);
|
||
|
||
}
|
||
|
||
```
|
||
|
||
|
||
|
||
### C语言-2
|
||
|
||
```c
|
||
/*------------------------------------------------------------------------------
|
||
【程序设计】任意一个大于0的正整数,都可以写成若干个2的正整数次幂的和的形式。
|
||
例如:7=2^2+2^1+2^0
|
||
------------------------------------------------------------------------
|
||
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,否则不得分。
|
||
仅在Program-End之间填入若干语句。不要删除标志否则不得分。
|
||
------------------------------------------------------------------------------*/
|
||
#include<stdio.h>
|
||
#include<string.h>
|
||
#include<math.h>
|
||
#include<ctype.h>
|
||
#include<stdlib.h>
|
||
|
||
#define N 4
|
||
|
||
void binary_power(unsigned int x)
|
||
{
|
||
int flag =1;
|
||
unsigned int s,t,y;
|
||
printf("%u=",x);
|
||
|
||
/**********Program**********/
|
||
t = 1;
|
||
y = 0;
|
||
//二进制的权位值 2^2 2^1 2^0
|
||
//从末尾开始一直乘 乘到 大于传入的x就停止 同时记录下次方数
|
||
while(t <= x){
|
||
t*=2;
|
||
y++;
|
||
}
|
||
y--;//2^y 会正好大于x
|
||
printf("2^%d", y);//最高位
|
||
x -= (int)pow(2, y);//求2的y次方 同时对x进行减法运算
|
||
y--;
|
||
|
||
while(x > 0){
|
||
t = 1;
|
||
s = (int)pow(2, y);
|
||
if(x >= s){//当前权位值没有大于需要运算的数据
|
||
x -= s;
|
||
printf("+2^%d", y);
|
||
}
|
||
y--;
|
||
}
|
||
/********** End **********/
|
||
printf("\n");
|
||
}
|
||
int main()
|
||
{
|
||
unsigned int n[N]={1,15,32,144};
|
||
int i;
|
||
for(i=0;i<N;++i)
|
||
binary_power(n[i]);
|
||
return 0;
|
||
}
|
||
|
||
```
|
||
|
||
|
||
|
||
### C语言-3
|
||
|
||
```c
|
||
/*------------------------------------------------------------------------------
|
||
【程序设计】从键盘接收3个无序的整数,将这3个数据都插入到升序排列的数组中,并保持数组仍然有序。
|
||
输入输出如下:
|
||
4 6 9 12 15 18 23 26 32 39
|
||
1 5 6
|
||
1 4 5 6 6 9 12 15 18 23 26 32 39
|
||
------------------------------------------------------------------------
|
||
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,否则不得分。
|
||
仅在Program-End之间填入若干语句。不要删除标志否则不得分。
|
||
------------------------------------------------------------------------------*/
|
||
#include<stdio.h>
|
||
#define N 10
|
||
void main( )
|
||
{
|
||
int a[N+5]={4,6,9,12,15,18,23,26,32,39},p,x,i,j;
|
||
for(i=0;i<N;i++){
|
||
printf("%d ",a[i]);
|
||
}
|
||
printf("\n");
|
||
/**********Program**********/
|
||
for(i=N;i<N+3;i++){
|
||
scanf("%d", a+i);
|
||
}
|
||
|
||
for(i=0;i<N+3-1;i++){
|
||
for(j=0;j<N+3-1-i;j++){
|
||
if(a[j] > a[j+1]){
|
||
x = a[j];
|
||
a[j] = a[j+1];
|
||
a[j+1] = x;
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
|
||
|
||
/********** End **********/
|
||
for(i=0;i<N+3;i++){
|
||
printf("%d ",a[i]);
|
||
}
|
||
printf("\n");
|
||
}
|
||
|
||
```
|
||
|
||
|
||
|
||
### C语言-4
|
||
|
||
```c
|
||
/*------------------------------------------------------------------------------
|
||
【程序设计】输入一个小于等于10000的整数n,在[100,n]之间打印出各位数字和为5的所有整数的个数.
|
||
------------------------------------------------------------------------
|
||
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,否则不得分。
|
||
仅在Program-End之间填入若干语句。不要删除标志否则不得分。
|
||
------------------------------------------------------------------------------*/
|
||
#include<stdio.h>
|
||
|
||
void main()
|
||
{
|
||
int a,b,c,d,k,i,n;
|
||
k=0;
|
||
scanf("%d",&n);
|
||
/**********Program**********/
|
||
|
||
for(i=100;i<=n;i++){
|
||
a = i;//备份一遍i的数据
|
||
d = 0;
|
||
while(a){
|
||
d += (a%10);
|
||
a /= 10;
|
||
}
|
||
if(d == 5){
|
||
k++;
|
||
}
|
||
}
|
||
/********** End **********/
|
||
printf("%d\n",k);
|
||
}
|
||
|
||
```
|
||
|
||
|
||
|
||
### C语言-5
|
||
|
||
```c
|
||
/*------------------------------------------------------------------------------
|
||
【程序设计】编写函数rtrim,用来删除字符串尾部的空格,首部和中间的空格不删除。例如:字符串为:" A BC DEF ",
|
||
删除后的结果是" A BC DEF"。要求函数形参采用指针变量。
|
||
测试输入: A BC DEF
|
||
测试输出: A BC DEF
|
||
说明:测试输入中,A前有4个空格,F后有5个空格
|
||
------------------------------------------------------------------------
|
||
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,否则不得分。
|
||
仅在Program-End之间填入若干语句。不要删除标志否则不得分。
|
||
------------------------------------------------------------------------------*/
|
||
#include <stdio.h>
|
||
#include <string.h>
|
||
void main()
|
||
{
|
||
void rtrim(char *p);
|
||
char s[100];
|
||
gets(s);
|
||
rtrim(s);
|
||
puts(s);
|
||
}
|
||
void rtrim(char *p)
|
||
{
|
||
int i;
|
||
/**********Program**********/
|
||
i=0;
|
||
while(*(p+i) != '\0'){
|
||
i++;
|
||
}
|
||
while(*(p+i-1) == ' '){
|
||
*(p+i-1) = '\0';
|
||
i--;
|
||
}
|
||
|
||
/********** End **********/
|
||
}
|
||
|
||
```
|
||
|
||
|
||
|
||
### C语言-6
|
||
|
||
```c
|
||
/*------------------------------------------------------------------------------
|
||
【程序设计】定义一个函数实现字符串的逆序存放(连续的字符串,中间不包含空格),要求用指针实现。
|
||
在主函数中调用函数实现字符串逆序存放。运行程序,输入字符串,输出逆序后的字符串。
|
||
------------------------------------------------------------------------
|
||
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,否则不得分。
|
||
仅在Program-End之间填入若干语句。不要删除标志否则不得分。
|
||
------------------------------------------------------------------------------*/
|
||
#include<stdlib.h>
|
||
#include<stdio.h>
|
||
void reversed_str(char *str){
|
||
char *p=str,*q=str;
|
||
int temp;
|
||
while(*q!='\0'){
|
||
q++;
|
||
}
|
||
q--;
|
||
/**********Program**********/
|
||
while(p < q){
|
||
temp = *p;
|
||
*p = *q;
|
||
*q = temp;
|
||
p++;
|
||
q--;
|
||
}
|
||
/********** End **********/
|
||
}
|
||
int main(){
|
||
char s[50];
|
||
printf("输入字符串:");
|
||
scanf("%s",s);
|
||
printf("逆序前:%s\n",s);
|
||
reversed_str(s);
|
||
printf("逆序后:%s\n",s);
|
||
return 0;
|
||
}
|
||
|
||
```
|
||
|
||
|
||
|
||
### C语言-7
|
||
|
||
```c
|
||
/*------------------------------------------------------------------------------
|
||
【程序设计】从键盘输入一位整数i,计算其各位数字之和。
|
||
------------------------------------------------------------------------
|
||
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,否则不得分。
|
||
仅在Program-End之间填入若干语句。不要删除标志否则不得分。
|
||
------------------------------------------------------------------------------*/
|
||
#include<stdio.h>
|
||
#include <stdlib.h>
|
||
int main(){
|
||
int i,sum=0,a;
|
||
scanf("%d",&i);
|
||
/**********Program**********/
|
||
while(i){
|
||
sum += i%10;
|
||
i/=10;
|
||
}
|
||
/********** End **********/
|
||
printf("%d\n",sum);
|
||
return 0;
|
||
}
|
||
|
||
```
|
||
|
||
|
||
|
||
### C语言-8
|
||
|
||
```c
|
||
/*------------------------------------------------------------------------------
|
||
【程序设计】编写函数,判断一个字符串是否是回文。在主函数中输入一个字符串,调用自定义函数,输出结果。
|
||
所谓回文是指顺读和倒读都一样的字符串。如"XZYKYZX"是回文。
|
||
------------------------------------------------------------------------
|
||
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,否则不得分。
|
||
仅在Program-End之间填入若干语句。不要删除标志否则不得分。
|
||
------------------------------------------------------------------------------*/
|
||
#include <stdio.h>
|
||
#include <string.h>
|
||
void main()
|
||
{
|
||
char s[50];
|
||
int hw(char *s);
|
||
gets(s);
|
||
if(hw(s))
|
||
printf("是回文!\n");
|
||
else
|
||
printf("不是回文!\n");
|
||
}
|
||
int hw(char *s)
|
||
{
|
||
int flag=1;
|
||
char *p,*q;
|
||
/**********Program**********/
|
||
p = s;//指向字符串首元素
|
||
q = s+strlen(s)-1;//指向末尾元素
|
||
while(p < q){
|
||
if(*p != *q){
|
||
flag = 0;
|
||
break;
|
||
}
|
||
p++;
|
||
q--;
|
||
}
|
||
|
||
return flag;
|
||
/********** End **********/
|
||
}
|
||
|
||
```
|
||
|