转换字母大小写
#include<stdio.h>
#include<string.h>
#define N 100
void upper(char a[])
{
for(int i=0;a[i];i++){
if(a[i]>='a'&&a[i]<='z')
a[i]=a[i]+'A'-'a';
}
}
void lower(char a[])
{
for(int i=0;a[i];i++){
if(a[i]>='A'&&a[i]<='Z')
a[i]=a[i]-'A'+'a';
}
}
int main()
{
char a[N];
gets(a);
upper(a);
puts(a);
printf("\n");
lower(a);
puts(a);
return 0;
}
字符串
#include<stdio.h>
#include<string.h>
#define N 100
int main()
{
char a[N];
scanf("%[^\n]",a);
//gets(a);
puts(a);
return 0;
}
#include<stdio.h>
#include<string.h>
#define N 100
int main()
{
char a[N]="hjdsh\0nndn";
for(int i=0;i<strlen(a);i++){
printf("%s\n",a+i);
}
return 0;
}
/*
数据集合含有重复值
求数据集合的最大值,以及最大值出现的次数
*/
#include<stdio.h>
#define N 15
int main()
{
int a[N]={11,5,5,5,2,-8,11,5,5,5,-5,5,2,2,11};
int max=0,cnt=1;
for(int i=1;i<N;i++){
if(a[i]>a[max]){
max=i;
cnt=1;
}
else{
if(a[i]==a[max]){
cnt++;
}
}
}
printf("最大值是%d出现了%d次",a[max],cnt);
return 0;
}
/*
求数组的最大值和最小值
*/
#include<stdio.h>
#define N 88
int main()
{
int a[N]={3,52,5,8,4,7,6,9};
int max=0,min=1;
for(int i=0;i<N;i++){
if(a[i]>a[max])
max=i;
else if(a[i]<a[min])
min=i;
}
printf("这个数组的最大值最小值分别是%d,%d",a[max],a[min]);
return 0;
}
/*
求数据集合的最大值和次大值
*/
#include<stdio.h>
#define N 8
int main()
{
int a[N]={39,2,5,888,4,7,6,39};
int max=0,max_next=1;
for(int i=1;i<N;i++){
if(a[i]>a[max]){
max_next=max;
max=i;
}
else{
if(a[i]>a[max_next]){
max_next=i;
}
}
}
printf("该数组的最大值次大值分别是%d,%d",a[max],a[max_next]);
return 0;
}
求数据集合的最大值
#include<stdio.h>
#define N 8
int find_max(int a[])
{
int max=0;
for(int i=0;i<N;i++){
if(a[i]>a[max])
max=i;
}
return max;
}
int main()
{
int a[N]={11,2,5,88,4,7,6,9};
int max;
max=find_max(a);
printf("数据集合的最大值是%d",a[max]);
return 0;
}
/*
查找数据集合一对和值为k的元素
*/
#include<stdio.h>
#define N 8
int main()
{
int a[N]={3,2,5,8,4,7,6,9};
int k=145;
int i,j;
for(i=0;i<N;i++){
for(j=i+1;j<N;j++){
if(a[i]+a[j]==k){
printf("这个数据集合中有和值为%d的两个元素\n",k);
break;
}
}
if(a[i]+a[j]==k)
break;
}
if(a[i]+a[j]!=k){
printf("没有和值为%d的两个元素\n",k);
}
return 0;
}
利用标志flag来消除break
#include<stdio.h>
#define N 8
int main()
{
int a[N]={3,2,5,8,4,7,6,9};
int i,j,k,flag=1;
printf("请输入k:");
scanf("%d",&k);
for(i=0;i<N&&flag;i++){
for(j=i+1;j<N;j++){
if(a[i]+a[j]==k){
flag=0;
}
}
}
flag==0?printf("有和值为%d的两个元素\n",k):printf("没有和值为%d的两个元素\n",k);
return 0;
}
/*
将数组循环输出k圈
*/
#include<stdio.h>
#define N 8
int main()
{
int a[N]={3,2,5,8,4,7,6,9};
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
printf("%d\t",a[j]);
}
printf("\n");
}
return 0;
}
利用一重循环将数组输出k圈
#include<stdio.h>
#define N 8
int main()
{
int a[N]={3,2,5,8,4,7,6,9};
for(int i=0;i<3*N;i++){
printf("%d\t",a[i%N]);
if(i%N==N-1){
printf("\n");
}
}
return 0;
}
/例4:设数据集合无重复值,求数据集合最大值与次大值/
#include<stdio.h>
#define N 10
int main()
{
int a[N]={9999,2222,5,8,4,888887,6,-9,55,-69};
int max,second_max;
max=a[0];
second_max=a[1];
for(int i=1;i<N;i++){
if(a[i]>max){
second_max=max;
max=a[i];
}
else{
if(a[i]>second_max){
second_max=a[i];
}
}
}
printf("最大值和次大值分别是%d\t%d",max,second_max);
return 0;
}
//计算字符串的值
#include<stdio.h>
#include<math.h>
#define N 6666
double convert(char a[])
{
double sum=0;
double f;
int i,flag=0;
for(i=0;a[i]-'\0';i++){
if(a[i]!='.'&&!flag){
f=a[i]-'0';
sum=sum*10+f;
}
else{
if(a[i]=='.'){
flag=1;
}
else{
f=a[i]-'0';
sum=sum+f*pow(0.1,(double)flag);
flag++;
}
}
}
return sum;
}
int main()
{
char a[N]="36987.456";
double b;
b=convert(a);
printf("%f",b);
return 0;
}
将第二个分支里面进行改进h初始值为1
else{
f=a[i]-'0';
h=h*0.1;
sum=sum+h*f;
}