求一个100到150条的C语言程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求一个100到150条的C语言程序相关的知识,希望对你有一定的参考价值。

http://zhidao.baidu.com/question/155343211.html
C语言是所有图形界面的基础。
#include <dos.h>
#include <time.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <graphics.h>

struct ViewPort

int left;
int top;
int right;
int bottom;
;

struct Point

int x;
int y;
;
struct MyTime

int Hour;
int Min;
int Sec;
;

struct ViewPort AllSrc; /*全屏视口*/
struct ViewPort MouseBox=0,0,623,479; /*鼠标能到达的最大视口*/
struct ViewPort TimeBox=428,25,600,55; /*时间视口*/
struct Point Mouse,lastpos; /*鼠标重绘时用,记录鼠标的当前位置和上一位置*/
struct MyTime timer;

void*bitmap; /*保存鼠标上一位置的位图(除去鼠标本身)*/

char ARROR1[]=
/*以下是 鼠标箭头 的 16点阵 字模,128 byte ,横向,自己绘制*/
0xe0,0x00,
0xfe,0x00,
0xff,0xf0,
0x7f,0xfe,
0x7f,0xf0,
0x7f,0x00,
0x7f,0x00,
0x3f,0x80,
0x39,0xc0,
0x38,0xe0,
0x38,0x70,
0x38,0x38,
0x10,0x1c,
0x10,0x0e,
0x10,0x06,
0x00,0x00
;

void drawHanzi(char *mat,int matsize,int x,int y,int color) /*从字模点阵数组中获得字模,显示汉字*/
/*依次:字模指针、点阵大小、起始坐标(x,y)、颜色*/

int i,j,k,n;
n=(matsize-1)/8+1;
for(j=0;j<matsize;j++)
for(i=0;i<n;i++)
for(k=0;k<8;k++)
if(mat[j*n+i]&(0x80>>k)) /*测试为1的位则显示*/
putpixel(x+i*8+k,y+j,color);



void MouseSetXY(int x,int y) /*设置鼠标的位置*/

_CX=x;
_DX=y;
_AX=0x04;
geninterrupt(0x33);
Mouse.x=x;
Mouse.y=y;


void MouseGetXY() /*获取鼠标的位置*/

_AX=0x03;
geninterrupt(0x33);
Mouse.x=_CX;
Mouse.y=_DX;


int LeftPress() /*判断鼠标左键是否被按下*/

_AX=0x03;
geninterrupt(0x33);
return (_BX&1);


int RightPress() /*判断鼠标右键是否被按下*/

_AX=0x03;
geninterrupt(0x33);
return (_BX&2);


void SetMouseXRange(int min,int max) /*设置鼠标横向坐标范围*/

_AX=0x07;
_CX=min;
_DX=max;
geninterrupt(0x33);


void SetMouseYRange(int min,int max) /*设置鼠标纵向坐标范围*/

_AX=0x08;
_CX=min;
_DX=max;
geninterrupt(0x33);


int bFirst=1;

void DrawMouse() /*在Mouse对应坐标处绘制鼠标*/

if(bFirst)

bFirst=0;
getimage(Mouse.x,Mouse.y,Mouse.x+15,Mouse.y+15,bitmap);
drawHanzi(ARROR1,16,Mouse.x,Mouse.y,YELLOW);

else

putimage(lastpos.x,lastpos.y,bitmap,COPY_PUT);
getimage(Mouse.x,Mouse.y,Mouse.x+15,Mouse.y+15,bitmap);
drawHanzi(ARROR1,16,Mouse.x,Mouse.y,YELLOW);

lastpos.x=Mouse.x;
lastpos.y=Mouse.y;


void HideMouse() /*隐藏鼠标*/

putimage(lastpos.x,lastpos.y,bitmap,COPY_PUT);
bFirst=1;


void SetViewPort(struct ViewPort p) /*设置视口*/

setviewport(p.left,p.top,p.right,p.bottom,1);


void SetMouseRange(struct ViewPort p)

SetMouseXRange(p.left,p.right);
SetMouseYRange(p.top,p.bottom);


void TimeAdd(struct MyTime* pt)

pt->Sec++;
if(pt->Sec>59)

pt->Sec=0;
pt->Min++;
if(pt->Min>59)

pt->Min=0;
pt->Hour++;




void FormatTime(char* st,struct MyTime t)

sprintf(st,"%d:%2d:%2d",t.Hour,t.Min,t.Sec);


void DrawTop()

char st[24];
long ti,last=time(NULL);
int starty=5;
int startx=200,endx=418;
struct time tm,lasttm;
struct time tm_click,lasttm_click;

gettime(&lasttm);
while(!kbhit())


SetViewPort(AllSrc);
setlinestyle(SOLID_LINE,NULL,THICK_WIDTH);
setfillstyle(0,YELLOW);
MouseGetXY();
gettime(&tm);
if( ((tm.ti_sec-lasttm.ti_sec)*100+tm.ti_hund-lasttm.ti_hund)>10)

DrawMouse();
lasttm=tm;

ti=time(NULL);
if(ti!=last)

SetViewPort(TimeBox);
TimeAdd(&timer);
FormatTime(st,timer);
setcolor(RED);
clearviewport();
outtextxy(2,2,st);
last=ti;




main()

int driver,mode;
driver=VGA;
mode=VGAHI;
timer.Hour=0;
timer.Min=0;
timer.Sec=0;
initgraph(&driver,&mode,"C:\\Turboc2"); /*自己改路径*/
AllSrc.left=0;
AllSrc.top=0;
bitmap=malloc(imagesize(0,0,15,15));
AllSrc.right=getmaxx();
AllSrc.bottom=getmaxy();
setbkcolor(LIGHTGRAY);
SetMouseRange(MouseBox);
MouseSetXY(100,100);
SetViewPort(AllSrc);
DrawTop();
closegraph();
return 0;
参考技术A 这么抽象!追问

额,,,因为老师没有具体要求,如果我给你一个命题,您能写出来吗?比如:52张牌,四个人,完成洗牌发牌。

追答

你这个题目需要100行程序吗?
我觉得也就20、30行吧

追问

只要写得出来就行

参考技术B 题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
1.程序分析:
2.程序源代码:
main()

int number[20],n,m,i;
printf("the total numbers is:");
scanf("%d",&n);
printf("back m:");
scanf("%d",&m);
for(i=0;i<n-1;i++)
 scanf("%d,",&number[i]);
scanf("%d",&number[n-1]);
move(number,n,m);
for(i=0;i<n-1;i++)
 printf("%d,",number[i]);
printf("%d",number[n-1]);

move(array,n,m)
int n,m,array[20];

int *p,array_end;
array_end=*(array+n-1);
for(p=array+n-1;p>array;p--)
 *p=*(p-1);
 *array=array_end;
 m--;
 if(m>0) move(array,n,m);

==============================================================
【程序69】
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
1. 程序分析:
2.程序源代码:
#define nmax 50
main()

int i,k,m,n,num[nmax],*p;
printf("please input the total of numbers:");
scanf("%d",&n);
p=num;
for(i=0;i<n;i++)
 *(p+i)=i+1;
 i=0;
 k=0;
 m=0;
 while(m<n-1)
 
 if(*(p+i)!=0) k++;
 if(k==3)
  *(p+i)=0;
 k=0;
 m++;
 
i++;
if(i==n) i=0;

while(*p==0) p++;
printf("%d is left\n",*p);

==============================================================
【程序70】
题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。   
1.程序分析:
2.程序源代码:
main()

int len;
char *str[20];
printf("please input a string:\n");
scanf("%s",str);
len=length(str);
printf("the string has %d characters.",len);

length(p)
char *p;

int n;
n=0;
while(*p!='\0')

 n++;
 p++;

return n;

【程序71】
题目:编写input()和output()函数输入,输出5个学生的数据记录。
1.程序分析:
2.程序源代码:
#define N 5
struct student
char num[6];
 char name[8];
 int score[4];
stu[N];
input(stu)
struct student stu[];
int i,j;
 for(i=0;i<N;i++)
  printf("\n please input %d of %d\n",i+1,N);
  printf("num: ");
  scanf("%s",stu[i].num);
  printf("name: ");
  scanf("%s",stu[i].name);
   for(j=0;j<3;j++)
    printf("score %d.",j+1);
    scanf("%d",&stu[i].score[j]);
   
  printf("\n");
 

print(stu)
struct student stu[];
int i,j;
printf("\nNo. Name Sco1 Sco2 Sco3\n");
for(i=0;i<N;i++)
printf("%-6s%-10s",stu[i].num,stu[i].name);
 for(j=0;j<3;j++)
  printf("%-8d",stu[i].score[j]);
 printf("\n");


main()

 input();
 print();

==============================================================
【程序72】
题目:创建一个链表。
1.程序分析:           
2.程序源代码:
/*creat a list*/ #i nclude "stdlib.h"
#i nclude "stdio.h"
struct list
int data;
struct list *next;
;
typedef struct list node;
typedef node *link;
void main()
link ptr,head;
int num,i;
ptr=(link)malloc(sizeof(node));
ptr=head;
printf("please input 5 numbers==>\n");
for(i=0;i<=4;i++)

 scanf("%d",&num);
 ptr->data=num;
 ptr->next=(link)malloc(sizeof(node));
 if(i==4) ptr->next=NULL;
 else ptr=ptr->next;

ptr=head;
while(ptr!=NULL)
printf("The value is ==>%d\n",ptr->data);
 ptr=ptr->next;


==============================================================
【程序73】
题目:反向输出一个链表。   
1.程序分析:
2.程序源代码:
/*reverse output a list*/ #i nclude "stdlib.h"
#i nclude "stdio.h"
struct list
int data;
 struct list *next;
;
typedef struct list node;
typedef node *link;
void main()
link ptr,head,tail; 
 int num,i;
 tail=(link)malloc(sizeof(node));
 tail->next=NULL;
 ptr=tail;
 printf("\nplease input 5 data==>\n");
 for(i=0;i<=4;i++)
 
  scanf("%d",&num);
  ptr->data=num;
  head=(link)malloc(sizeof(node));
  head->next=ptr;
  ptr=head;
 
ptr=ptr->next;
while(ptr!=NULL)
printf("The value is ==>%d\n",ptr->data);
 ptr=ptr->next;



==============================================================

【程序74】
题目:连接两个链表。
1.程序分析:
2.程序源代码:
#i nclude "stdlib.h"
#i nclude "stdio.h"
struct list
int data;
struct list *next;
;
typedef struct list node;
typedef node *link;
link delete_node(link pointer,link tmp)
if (tmp==NULL) /*delete first node*/  return pointer->next;
else
if(tmp->next->next==NULL)/*delete last node*/   tmp->next=NULL;
 else /*delete the other node*/   tmp->next=tmp->next->next;
 return pointer;


void selection_sort(link pointer,int num)
link tmp,btmp;
 int i,min;
 for(i=0;i<num;i++)
 
 tmp=pointer;
 min=tmp->data;
 btmp=NULL;
 while(tmp->next)
  if(min>tmp->next->data)
 min=tmp->next->data;
  btmp=tmp;
 
 tmp=tmp->next;
 
printf("\40: %d\n",min);
pointer=delete_node(pointer,btmp);


link create_list(int array[],int num)
link tmp1,tmp2,pointer;
int i;
pointer=(link)malloc(sizeof(node));
pointer->data=array[0];
tmp1=pointer;
for(i=1;i<num;i++)
tmp2=(link)malloc(sizeof(node));
 tmp2->next=NULL;
 tmp2->data=array[i];
 tmp1->next=tmp2;
 tmp1=tmp1->next;

return pointer;

link concatenate(link pointer1,link pointer2)
link tmp;
tmp=pointer1;
while(tmp->next)
 tmp=tmp->next;
tmp->next=pointer2;
return pointer1;

void main(void)
int arr1[]=3,12,8,9,11;
 link ptr;
 ptr=create_list(arr1,5);
 selection_sort(ptr,5);


【程序75】
题目:放松一下,算一道简单的题目。
1.程序分析:
2.程序源代码:
main()

int i,n;
for(i=1;i<5;i++)
n=0;
 if(i!=1)
 n=n+1;
 if(i==3)
 n=n+1;
 if(i==4)
 n=n+1;
 if(i!=4)
 n=n+1;
 if(n==3)
  printf("zhu hao shi de shi:%c",64+i);
 

==============================================================
【程序76】
题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数)
1.程序分析:
2.程序源代码:
main()
#i nclude "stdio.h"
main()

float peven(),podd(),dcall();
float sum;
int n;
while (1)

 scanf("%d",&n);
 if(n>1)
  break;

if(n%2==0)

 printf("Even=");
 sum=dcall(peven,n);

else

 printf("Odd=");
 sum=dcall(podd,n);

printf("%f",sum);

float peven(int n)

float s;
int i;
s=1;
for(i=2;i<=n;i+=2)
 s+=1/(float)i;
return(s);

float podd(n)
int n;

float s;
int i;
s=0;
for(i=1;i<=n;i+=2)
 s+=1/(float)i;
return(s);

float dcall(fp,n)
float (*fp)();
int n;

float s;
s=(*fp)(n);
return(s);

==============================================================
【程序77】
题目:填空练习(指向指针的指针)
1.程序分析:     
2.程序源代码:
main()
char *s[]="man","woman","girl","boy","sister";
char **q;
int k;
for(k=0;k<5;k++)
       ;/*这里填写什么语句*/  printf("%s\n",*q);


==============================================================
【程序78】
题目:找到年龄最大的人,并输出。请找出程序中有什么问题。
1.程序分析:
2.程序源代码:
#define N 4
#i nclude "stdio.h"
static struct man
char name[20];
int age;
person[N]="li",18,"wang",19,"zhang",20,"sun",22;
main()
struct man *q,*p;
int i,m=0;
p=person;
for (i=0;i<N;i++)
if(m<p->age)
 q=p++;
 m=q->age;
printf("%s,%d",(*q).name,(*q).age);

==============================================================
【程序79】
题目:字符串排序。
1.程序分析:
2.程序源代码:
main()

char *str1[20],*str2[20],*str3[20];
char swap();
printf("please input three strings\n");
scanf("%s",str1);
scanf("%s",str2);
scanf("%s",str3);
if(strcmp(str1,str2)>0) swap(str1,str2);
if(strcmp(str1,str3)>0) swap(str1,str3);
if(strcmp(str2,str3)>0) swap(str2,str3);
printf("after being sorted\n");
printf("%s\n%s\n%s\n",str1,str2,str3);

char swap(p1,p2)
char *p1,*p2;

char *p[20];
strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);追问

没有长一点的吗?要100行左右

带进度条的Tkinter链接按钮

我正在使用Tkinter创建一个cookie clicker应用程序。我想在我的程序中有一个进度条,每次点击cookie 100次就会填满。我使用import ttk创建了进度条,但是每当按下按钮时我都不知道如何更新进度条。到目前为止,这是我的代码:

from Tkinter import *
from Tkinter import Canvas
import ttk
window1 = Tk()
window1.title("Cookie Clicker")
window1.config(background="dodger blue")
window1.geometry("254x370")
clicks = 0


def cookie_clicks():
    global clicks
    clicks = clicks + 1
    print("{0}".format(clicks))
    if clicks == 1:
        lbl1.configure(text="{0} Cookie!".format(clicks))
    else:
        lbl1.configure(text="{0} Cookies!".format(clicks))


cookie = Button(window1, highlightbackground="dodger blue", borderwidth=0, cursor="hand2", command=cookie_clicks)
photo = PhotoImage(file="imageedit_3_3213999137.gif")
cookie.config(image=photo, width="250", height="250")
cookie.place(x=0, y=90)
w = Canvas(window1, width=254, height=75, highlightbackground="gray")
w.pack()
w.create_rectangle(10, 10, 80, 80, outline="gray", fill="gray", width=100000)
w2 = Canvas(window1, width=0.1, height=250, highlightbackground="dodger blue")
w2.place(x=0, y=85)
w3 = Canvas(window1, width=0.1, height=250, highlightbackground="dodger blue")
w3.place(x=249, y=85)
w4 = Canvas(window1, width=250, height=0.1, highlightbackground="dodger blue")
w4.place(x=0, y=88)
w5 = Canvas(window1, width=250, height=0.1, highlightbackground="dodger blue")
w5.place(x=0, y=338)
lbl1 = Label(window1, bg="gray", fg="dodger blue", text="{0} Cookies!".format(clicks), font=("kavoon", 20))
lbl1.place(x=75, y=45)
lbl2 = Label(window1, bg="gray", fg="dodger blue", text="Cookie Clicker", font=("kavoon", 30))
lbl2.place(x=20, y=0)
pb = ttk.Progressbar(window1, orient='horizontal', mode='determinate')
pb.pack()


window1.mainloop()

任何帮助,将不胜感激!

答案

在不改变代码的情况下,您可以:

def cookie_clicks():
    global clicks, pb
    clicks = clicks + 1
    pb.step(1)
    print("{0}".format(clicks))
    if clicks == 1:
        lbl1.configure(text="{0} Cookie!".format(clicks))
    else:
        lbl1.configure(text="{0} Cookies!".format(clicks))

使用global变量并不好。您应该考虑在一个类中封装您的应用程序。

以上是关于求一个100到150条的C语言程序的主要内容,如果未能解决你的问题,请参考以下文章

c语言如何求1至100之间的全部奇数之和

C语言 求2到100内的所有素数和

如何用C语言求1至100所有素数的和?

C语言怎样求1到100偶数之和

C语言怎样求1到100偶数之和?

c语言 求1到100的累加数(用两种方法)