c语言各类问题 代码
定义一个结构体,有两个成员变量,一个整型的n,一个字符型的c,利用结构体类型声明一个具有5个元素的数组,并随机初始化,根据成员变量n进行从小到大排序,然后输出
冒泡排序然后 在输出结构体
#include<stdio.h>
struct d
{
int x;
char y;
};
int main(void)
{
struct d a[5];
int i,d;
int b[6];
for(i=0;i<5;i++)
{
scanf("%d%c",&a[i].x,&a[i].y);
}
for(i=0;i<5;i++)
{
b[i]=a[i].x;
}
for(i=0;i<5;i++)
{
for(d=0;d<5-i;d++)
{
if(b[d]>b[d+1])
{
b[6]=b[d]+b[d+1];
b[d]=b[6]-b[d];
b[d+1]=b[6]-b[d];
}
}
}
for(i=0;i<5;i++)
{
for(d=0;d<5;d++)
{
if(b[i]==a[d].x)
{
printf("%d%c",a[d].x,a[d].y);
}
}
}
return 0;
}
//字母 顺序输出
#include<stdio.h>
int main(void)
{
char a,b;
scanf("%c%c",&a,&b);
if(a>b)
{
while(a>=b)
{
printf("%c",a);
a--;
}
}
else
{
while(b>=a)
{
printf("%c",b);
b--;
}
}
return 0;
}
//输出数组的个数比较多的 数字
#include<stdio.h>
int main (void)
{
int a1[10],a2[10]={0,0,0,0,0,0,0,0,0,0},a3[10];
int i,j,Max=0,ci=0,k=0;
for(i=0;i<10;i++)
{
scanf("%d",&a1[i]);
}
for(j=0;j<10;j++)
{
for(i=0;i<10;i++)
{
if(a1[j]==a1[i])
{
a2[j]++;
}
}
}
for(i=0;i<10;i++)
{
if(Max<a2[i])
{
Max=a2[i];
}
}
j=0;
for(i=0;i<10;i++)
{
if(Max==a2[i])
{
for(j=0;j<k;j++)
{
if(a3[j]==a1[i])
{
ci++;
}
}
if(ci==0)
{
printf("%d",a1[i]);
a3[k]=a1[i];
k++;
}
else
break;
}
}
return 0;
}
//杨辉三角
#include <stdio.h>
main()
{ int i,j,n=0,a[17][17]={0};
while(n<1 || n>16)
{ printf("请输入杨辉三角形的行数:");
scanf("%d",&n);
}
for(i=0;i<n;i++)
a[i][0]=1; /*第一列全置为一*/
for(i=1;i<n;i++)
for(j=1;j<=i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];/*每个数是上面两数之和*/
for(i=0;i<n;i++) /*输出杨辉三角*/
{ for(j=0;j<=i;j++)
printf("%5d",a[i][j]);
printf("\n");
}
}
//输出数组中增加和减小的数组
#include<stdio.h>
int main(void)
{
int i,j=0,a,Arry[10],Copy[10];
int t=0,f=0;
for(i=0;i<10;i++)//输入数组数据
{
scanf("%d",&Arry[i]);
}
for(i=0;i<10;i++)
{
if(i<9)
{
if(Arry[i]<Arry[i+1])//判断增长还是降低
{
f=1;
}
else
{
t=-1;
}
Copy[i]=Arry[i];//赋值给另外的 数组
}
else
{
Copy[i]=Arry[i];//赋值给另外的 数组
}
if(((t+f) == 0)||(i==9))//若等于9直接输出
{
if(i < 9)
{
for(a=j;a<i+1;a++)
{
printf("%d",Copy[a]);
printf("\n");
t=0;
f=0;
}
j=i;
i--;
}
else
{
for(a=j;a<i+1;a++)
{
printf("%d",Copy[a]);
printf("\n");
t=0;
f=0;
}
break;
}
}
}
return 0;
}
/字符数组 逆序输出
//这里边是用二维数组存储
for循环超过了条件才会跳出来,所以下边要i--;
#include<stdio.h>
int main(void)
{
char a[20][3];
int i=0,k;
for(i=0;i<20;i++)
{
scanf("%c",&a[i][0]);
}
i--;
for(k=i;k>=0;k--)
{
// if(a[k][0]!=32)
{
printf("%c\n",a[k][0]);
}
}
return 0;
}<string.h>
int main(void)
{
char a[100][12];
int i=0,k;
for(i=0;i<20;i++)
{
scanf("%c",&a[i][0]);
}
for(k=i;k>=0;k--)
{
printf("%c\n",a[k][0]);
}
return 0;
}
数字分解求和
#include <stdio.h>
void swap(int a)
{
int i=0,sum=0,j,k,b=0;
for(j=1;j<a;j++)
{
for(i = j; i < a;i ++)
{
sum += i;
if(sum == a )
{
sum = 0;
b++;
printf("%d=",a);
for(k = j;k < i;k ++)
printf("%d+",k);
printf("%d\n",i);
break;
}
}
sum=0;//每次用过后清零 否则 影响下次的求和
}
if(b==0)
printf("无法分解");
}
int main( void)
{
int a;
scanf("%d",&a);
swap(a);
return 0;
}
//输入三个数字 啊a b c c为步长
按顺序 输出 a到b的数组 步长为c 例如
1 3 1 输出:1 2 3
#include <stdio.h>
void swap(int a, int b, int c)
{
int i=0;
if(a>b)
{
for(i=a;i>=b;){
printf("%d",i);
i-=abs(c);
}
}
else
{
for(i=a;i<=b;)
{
printf("%d",i);
i+=abs(c);
}
}
}
int main( void)
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
swap(a,b,c);
return 0;
}
//1元钱能买一瓶汽水,喝完后n个空瓶可以换一瓶汽水。实现一个函数,传递一个整形的钱数m,一个整形的兑换比例n,返回最多能喝到的汽水数,并在main函数里将返回值输出。
#include <stdio.h>
int swap(int x, int y)
{
int a,sum = x;
a=x;
for (;(a/y)>0 ; ) {
sum+=a/y;
a=a/y+a%y;
}
//sum=sum-a%y;
return sum;
}
int main( void)
{
int a,b;
scanf("%d%d",&a,&b);
printf("%d",swap(a,b));
return 0;
}
//n的末尾的0
的个数
#include <stdio.h>//算法思想 是 把每个因数分解 计算因数中含有5的个数 5的个数就是结果
int Sum(const int n)
{
if(n<5) return 0;
int counter=0,i;
for(i=5;i<=n;i++){
int flag=i;
while(flag%5==0)
{
flag/=5;
counter++;
}
}
return counter;
}
int main( void)
{
int a;
scanf("%d",&a);
int b=Sum(a);
printf("%d",b);
return 0;
}
//魔幻方阵 就是 横竖斜 相加数值都相等
#include"stdio.h"
void main()
{
int a[15][15]={};
int n,i,j,k,p,q;
scanf("%d",&n);
i=0;
j=(n/2);
a[i][j]=1;
for(k=2;k<=n*n;k++)
{
p=i;
q=j;
i--;
j++;
if(i<0)
i=n-1;
if(j>n-1)
j=0;
if(a[i][j]!=0)
{
i=p+1;
j=q;
}
a[i][j]=k;
}
for(i=0;i<n;i++)
{
for(j=n-1;j>=0;j--)
printf(" %3d ",a[i][j]);
printf("\n");
}
}
//字符统计 输入不限个数数字 进行升序排序
、//跳出循环用数字与数字中间的空格判断 如果是\n就跳出循环
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int array[]={};
int i,j,x=0,k;
char c;
for(i = 0 ; ; i++){
scanf("%d%c",&x,&c);
array[i] = x;
if(c == '\n')
break;
}
for (j=0; j<=i; j++) {
for (x=0; x <= i-j-1; x++) {
if (array[x]>array[x+1]) {
int s=array[x]+array[x+1];
array[x]=s-array[x];
array[x+1]=s-array[x];
}
}
}
for (k = 0;k <= i ; k ++) {
printf("%d",array[k]);
}
return 0;
}
//围圈报数 输入 4 8
输出 1 2 3 4
0 0 0 5
0 0 0 6
0 0 8 7
#include<stdio.h>
#include<stdlib.h>
int main(void){
int **a,i,j,x,y,n,k;
scanf("%d%d",&n,&k);
a = (int**) malloc(sizeof(int*)*n);
for(i=0; i<n; i++)
a[i]=(int*)malloc(sizeof(int)*n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
a[i][j]=0;
for(i=1,j=0,x=0,y=0; i<=n*n; i++) {
a[x][y]=i;
switch (j) //j 为前进方向,0向右,1向下,2向左,3向上。
{
case 0:
if(y+1>n-1|| a[x][y+1]!=0) {j=1;x++;}
else y++;
break;
case 1:
if(x+1>n-1 || a[x+1][y]!=0){j=2;y--;}
else x++;
break;
case 2:
if(y == 0 || a[x][y-1]!=0){j=3; x--;}
else y--;
break;
case 3:
if(a[x-1][y]!=0){j=0; y++;}
else x--;
break;
}
}
for(i=0;i<n;i++) {
for(j=0;j<n;j++)
if(a[i][j]<=k)
printf("%4d",a[i][j]);
else
printf("%4d",0);
printf("\n");
free(a[i]);
}
free(a);
return 0;
}
//报数问题 n 个人 报数 报道i 那个人就退出 然后下个人从1开始报 知道一个人为止 求最后一个人的 号码
#include <stdio.h>
int main(int argc, const char * argv[])
{
// insert code here...
int num[100] = {};
int a , b , i ,c ;
scanf("%d%d" , &a , &b);
for (i = 0 ; i < a; i ++) {
num[i]=1;//有人为1 没人为0
}
int count=0;//统计报数
c=a;
for (i=0,count=0; a > 1 ; i ++) {
if (num[i] == 1) {
count++;
if(count == b)
{
a--;
num[i]=0;
count=0;
}
}
if(i == c-1) // 循环的范围是 小于人的个数
i = -1;
}
for (i = 0; i < c; i ++) {
if (num[i] == 1) {//输出最后一个人的 号码
printf("%d",i+1);
}
}
return 0;
}
//小明一次可以爬一级或者二级台阶 试问n级台阶 小明来走共有几种走法
#include<stdio.h>
int fun(int red,int n,char temp[],int k)
{
int i,j;
static int sum=0;
if(red==0)
{
for(i=1;i<=n;++i)
{
//printf("y");
}
//printf("\n");
sum++;
}
else if(n==red)
{
for(i=1;i<=red;++i)
{// printf("r");
}
//printf("\n");
sum++;
}
else
{
//printf("r");
temp[k++]='r';
fun(red-1,n-1,temp,k);
k--;
for(j=0;j<k;j++)
{ // printf("%c",temp[j]);
}
//printf("y");
temp[k++]='y';
fun(red,n-1,temp,k);
k--;
}
return sum;
}int main()
{
int n,k,i,d,s=0;
char temp[100];
scanf("%d",&n );
for (i=0; i <= n/2; i++) {
k = n - 2 * i;
d=i+k;
s = fun (i,d,temp,0);
}
printf("%d",s);
return 0;
}
比如:
输入:F
输出:
FEDCBA
EDCBAB
DCBABC
CBABCD
BABCDE
ABCDEF
#include<stdio.h>
int main(void)
{
char i, j , k ,sum=0;;
int count=0;
scanf("%c",&k);
sum = k - 'A'+1;
// printf("%d",sum);
for (i = k ; i >= 'A' ; i --) {
count = 0;
for (j = i ; j >= 'A' ; j --) {
printf("%c",j);
count++;
if(count == sum)
break;
}
j++;
for (j++; ; j++) {
if (count == sum)
break;
printf("%c",j);
count++;
}
printf("\n");
}
return 0;
}
//二维数组村字符串
用一维指针字符数组来存二维字符数组
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
char *n[90];
int i;
for (i = 0; i < 90; i ++){
n[i]=(char*)malloc(sizeof(char)*50);//动态申请字符的空间
scanf(“%s”,n[i]);//每个字符串
}
for (i=90; i>= 0; i --) {
if(n[i])//如果不为null 那么输出
printf("%s",n[i]);
}
return 0;
}
//输入不定数 数组 来排序
//scanf 与getchar 区别 getchar只会接受字符
scanf(%d,a)只读取数字 留下空格 和回车 每次只读取一个数字
#include <stdio.h>
int main(int argc, const char * argv[])
{
int a[100] = {};
int n = 0;
int i = 0;
printf("请输入数字以空格分隔开,以回车结束:\n");
do
{
scanf("%d", &n);//读取数字 下个字符是空格正好给了getchar 最后一个是回车 正好给getchar读取 跳出循环
a[i] = n;
i++;
}
while (getchar() != '\n');
for (int j = 0; j < i ; j++)
{
printf("%d ", a[j]);
printf("\n");
}
return 0;
}
//指针 排序数组 数组个数不限
void desc( int *a ,int n)
{
int *i = a,*j = i+ 1,temp, x= 0, * k = a + n ;//i是数组初始地址 temp是 变量 k是数组结束地址
// printf("%d",*k);
for ( x = 0; x < n ;x ++ )
{
for ( i = a ; i < k - 1 - x ; i ++)
{
j= i + 1;//i 与j 是地址 k也是地址
if ( *i > *j )//*i是 *i指向的 数值
{
temp = *i;
*i = *j;
*j = temp;
}
}
}
}
int main(void)
{
void desc(int *num, int n);
int num[10];
int i = 0, k = 0;
do{
scanf("%d",&num[i]);
i++;
}while(getchar()!= '\n');
desc(num, i);
for (k=0; k < i; k ++) {
printf("%d",num[k]);
}
return 0;
}
//定义一个一维字符指针数组,并利用不定长字符串将其初始化,最后一段字符串以‘@’结尾,然后将各字符串输出。
比如:
输入:
abc
ddde
abce@
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
char *n[10];
char p [100][20];
int i = 0 , j , k1 = 0, k2 , k3;
for (i = 0; i < 10; i ++){
n[i]=p[i];
scanf("%s",n[i]);
for (j = 0; j < 20; j ++) {
if(n[i][j] == '@'){
k1=1;
k3=j;
break;
}
}
if (k1 == 1 ) {
break;
}
}
for (k1 = 0; k1 < i; k1 ++) {
printf("%s",n[k1]);
}
for (k2 = 0; k2 < k3; k2 ++) {
printf("%c",n[k1][k2]);
}
return 0;
}
c语言各类问题 代码的更多相关文章
- 【伯乐在线】最值得阅读学习的 10 个 C 语言开源项目代码
原文出处: 平凡之路的博客 欢迎分享原创到伯乐头条 伯乐在线注:『阅读优秀代码是提高开发人员修为的一种捷径』http://t.cn/S4RGEz .之前@伯乐头条 曾发过一条微博:『C 语言进阶有 ...
- VS2015提示:未安装Style的Visual Studio语言支持,代码编辑Intellisense将不可用。服务器控件的标记Intellisense可能不起作用
一.问题 最近在VS2015打开文件,提示未安装Style的Visual Studio语言支持,代码编辑Intellisense将不可用.服务器控件的标记Intellisense可能不起作用. Int ...
- 小C和小派的缠绵爱情——C语言调用Python代码
我妒忌你的开源,你眼红我的速度,不如我们就在一起吧! --------SJ2050 2019.4.9号更新:实现在未安装python环境的机子上运行调用了python程序的C语言代码! 文章目录 环境 ...
- 今天我看了一个H5游戏EUI的例子,我都快分不清我到底是在用什么语言编译了代码了,作为刚刚学习H5游戏开发的菜鸟只能默默的收集知识
今天看了一个EUI的demo,也是接触H5游戏开发的第五天了,我想看看我能不能做点什么出来,哎,自己写果然还是有问题的.在看EUI哪一个demo的时候就遇见了一些摇摆不定的问题,我觉得提出来 1.to ...
- Redis教程(十五):C语言连接操作代码实例
转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/143.html 在之前的博客中已经非常详细的介绍了Redis的各种操作命令 ...
- 转: 最值得阅读学习的 10 个 C 语言开源项目代码
from: http://www.iteye.com/news/29665 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同 ...
- 转:最值得学习阅读的10个C语言开源项目代码
阅读优秀代码是提高开发人员修为的一种捷径…… 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试 ...
- 《Linux内核分析》week1作业-分析一个简单c语言的汇编代码
1.C语言源码 #include <stdio.h> int g(int x){ ; } int f(int x){ return g(x); } int main(){ )+; } 2. ...
- Keil 中关于C语言编译生成汇编代码函数名规则
在keil 中 C语言的函数有带参数和不带参数之分. 一般的资料里说fun(void)类型的函数不带参数,所以,keil编译器生成的汇编的调用地址(函数名) 为fun.这没有错.事实上,不管C语言的函 ...
随机推荐
- [Ext JS 4] Grid 实战之分页功能
前言 分页功能的实现有两种途径: 一种是服务端分页方式, 也就是web客户端传递页码参数给服务端,服务端根据页面参数返回指定条数的数据.也就是要多少取多少.这种方式比较适合Grid 的数据量很大,需 ...
- struts2 全局格式化,格式化时间,金钱,数字
//在前台页面去控制时间,数字,小数,金钱,是极其不明智的选择,除非你是写了良好的 js api 像freemarker , struts 都有良好的标签,我们应该好好利用,才发现的,给大家分享一下 ...
- C++中#include的工作原理
大多数人可能对“#include”比较熟悉,因为我们写C/C++程序的时候都会写的字符串之一,但是它是具体怎么工作的?或者它的原理是什么呢? 可能不太熟悉,也有可能没有去关心过.我们只关心程序能否正确 ...
- 用for循环遍历DataTable中的数据
for (int i = 0; i < dataTable.Rows.Count; i++) { for (int j = 0; j < dataTable.Columns.Count; ...
- ORACLE case when then
Oracle CASE WHEN 用法介绍 1. CASE WHEN 表达式有两种形式 --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ...
- Memcached基础
1.实例化 MemcachedClient client = new XMemcachedClient(); public XMemcachedClient() public XMemcachedCl ...
- C/C++中volatile关键字详解 (转)
1. 为什么用volatile? C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的 memory barrier.这是 BS 在 "The ...
- JavaScript之转义字符
<html lang="en"> <head> <meta charset="UTF-8"> <meta na ...
- Java处理java.util.ConcurrentModificationException异常
代码: public static void reduce(HashMap<String, Integer> hashMap, final Integer count) { Iterato ...
- 四轴飞行器1.5 各种PID对比分析及选择
原创文章,欢迎转载,转载请注明出处 这篇文章主要介绍我对PID的理解,以及选择PID算法的过程. 一 PID的理解和学习过程 二 飞控的PID效果 先上个飞控PID的响应的视频:介绍在后面 地址:ht ...