2018
1写个函数,七个双精度浮点数,从大到小排序输出中值,
#include <stdio.h>
#include <string.h>
//对数组元素排序
void swap(int *pa,int n)
{
int i,j,t;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(*(pa+i)>*(pa+j))
{
t=*(pa+i);
*(pa+i)=*(pa+j);
*(pa+j)=t;
}
}
}
}
int main()
{
int i,n,a[100];
//输入元素个数
scanf("%d",&n);
//输入每个元素的值
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
swap(a,n);
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
return 0;
}
2将函数转化成字符串,如1234转化成字符串1234.
#include <stdio.h>
char* Int2String(int num,char *str);//函数声明
int main()
{
int number1 = 123456;
int number2 = -123456;
char string[16] = {0};
Int2String(number1,string);
printf("数字:%d 转换后的字符串为:%s\n",number1,string);
Int2String(number2,string);
printf("数字:%d 转换后的字符串为:%s\n",number2,string);
return 0;
}
char* Int2String(int num,char *str)//10进制
{
int i = 0;//指示填充str
if(num<0)//如果num为负数,将num变正
{
num = -num;
str[i++] = '-';
}
//转换
do
{
str[i++] = num%10+48;//取num最低位 字符0~9的ASCII码是48~57;简单来说数字0+48=48,ASCII码对应字符'0'
num /= 10;//去掉最低位
}while(num);//num不为0继续循环
str[i] = '\0';
//确定开始调整的位置
int j = 0;
if(str[0]=='-')//如果有负号,负号不用调整
{
j = 1;//从第二位开始调整
++i;//由于有负号,所以交换的对称轴也要后移1位
}
//对称交换
for(;j<i/2;j++)
{
//对称交换两端的值 其实就是省下中间变量交换a+b的值:a=a+b;b=a-b;a=a-b;
str[j] = str[j] + str[i-1-j];
str[i-1-j] = str[j] - str[i-1-j];
str[j] = str[j] - str[i-1-j];
}
return str;//返回转换后的值
}
3 将一个字符串中的小写字母个数输出,如 good123
Dooq 输出结果是7
程序设计
#include <stdio.h>
#include<string.h>
int main(){
char str[20];
gets(str);
for (int i = 0; str[i] != '\0'; i++)
{
if (str[i] >= 'a'&&str[i] <= 'z'){
printf("%c", str[i]);
}
}
return 0;}
3*3矩阵
1计算对角线之和,画出流程图写出完整程序。
2输出行列式,划出流程图,写出完整程序。
#include <stdio.h>
#include<string.h>
int main(){
int sum = 0;
int a[3][3] = { {1,2,3},{4,5,6},{7,8,9} };
for (int i = 0; i < 3; i++)
{ for (int j = 0; j<3; j++)
{
printf("%4d", a[i][j]);
if (i == j || i + j == 2)
sum = sum + a[i][j];
}
printf("\n");
}
printf("%d\n", sum);
//第二题 输出数组
for( i=0; i < 3; i++)
{ for (int j = 0; j<3; j++)
{
printf("%4d", a[i][j]);
}
printf("\n");
}
return 0;
}